일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CustomScrollView
- textview
- binding
- livedata
- Navigation
- 안드로이드
- LifeCycle
- 앱바
- Coroutines
- textfield
- activity
- 계측
- 테스트
- ScrollView
- 앱
- appbar
- viewmodel
- Button
- TEST
- data
- android
- scroll
- intent
- tabbar
- DART
- drift
- Flutter
- Dialog
- Compose
- Kotlin
- Today
- Total
목록안드로이드 (110)
Study Record
😶 binding Adapter binding Adapter 는 View 에 대한 정보가 담긴 XML 파일의 뷰의 속성(attribute) 을 직접 설정할 수 있게 도와주는 어노테이션된 메서드이다. TextView 에서 볼 수 있는 android:text="Sample" 과 같은 속성을 설정하면 Android 시스템은 자동으로 속성 이름과 동일한 이름의 setter 를 찾는다. android:text="Sample" 속성의 setter 는 setText() 메서드는 안드로이드 프레임워크가 제공하는 메서드이기 때문에 별도의 setter 를 정의하지 않아도 된다. 이것과 비슷하게 binding Adapter 로 원하는 기능을 하는 속성을 원하는 이름을 붙여 정의할 수 있다. binding Adapter 는 ..
Retrofit 은 Android 에서 네트워크를 이용해 서버(Backend)와 데이터를 교환하는 것을 도와주는 라이브러리이다. 앱에서 서버에 데이터 요청(혹은 다른 서버와 관련된 작업)하면 Retrofit2 라이브러리가 서버와 통신하여 받을 데이터가 있으면 받아온다. 서버에서 받은 데이터를 Converter 라이브러리가 클라이언트 프로젝트에서 사용할 수 있는 데이터 형식으로 바꿔준다. 서버에서 응답으로 보내는 데이터는 주로 XML 혹은 JSON 으로 돌려준다. 데이터 형식을 바꿔주는 Converter 라이브러리로 Moshi 는 서버에서 받은 JSON 형식(데이터 형식)으로 받은 데이터를 Kotlin 객체로 변환하는 Android JSON Parser 이다. + Converter 라이브러리로 Scalar..
코틀린의 모든 Exception class 는 Thrwoable 클래스를 상속받는다. 모든 Exception(예외)는 메시지, 스택추적, 선택적 원인을 가지고 있다. 😶 예외 발생시키기 예외를 발생시키는 것은 throw 표현을 사용한다. throw Exception("Hi There!") 😶 예외 잡기 예외가 발생하여 프로그램이 종료되는 것을 막으려면 try...catch 표현을 사용한다. try { // some code } catch (e: Exception) { // handler } finally { // optional finally block } try 에 예외가 발생할 가능성이 있는 코드를 적는다. try 문을 실행하는 동안 catch 의 Exception 종류에 따라 예외가 발생했을 때 처..
😶 Thread 와 Android 개요 앱을 만들면서 서버와의 통신(네트워킹), 데이터베이스 작업과 같은 고급 기능을 추가하면서 작업 수행 시간이 길어지면 앱의 UI가 끊겨서 보이거나 버튼을 클릭했을 때 실행되지 않은 것처럼 보이기도 한다. 작업 수행이 길면 왜 이런 문제점이 생기느냐를 논하기에 앞서, 스레드의 개념을 알고 있어야 한다. 스레드는 프로그램이 실행되는 가장 작은 코드 단위이며 단순하게 스레드를 앱에서 코드를 실행하는 단일 경로라고 생각할 수 있다. 코드 한 줄이 실행이 끝나야 다음줄로 넘어갈 수 있다. 같은 블록에 작성된 코드는 동일한 스레드에서 순차적으로 실행된다. 모든 앱은 메인 스레드(UI 스레드)가 하나씩 있고 개발자가 코드로 스레드를 생성/시작시킬 수 있다. 이렇게 실행 중인 앱에..
😶 SlidingPaneLayout 패턴 Android 가 사용되는 기기는 핸드폰뿐만 아니라 태블릿, 데스크톱 등에서 사용될 수 있다. 이에 기기에 맞게 화면을 재구성해야 할 때가 있다. SlidingPaneLayout 은 화면을 재구성하기 쉽게 도와주는 Layout 이다. 예를 들어, 목록 List View 가 있고 그 List 의 항목을 클릭하면 세부 정보를 보여주는 View 가 있을 수 있다. 이것을 화면이 작은 핸드폰과 같은 기기에서는 List 항목을 보여주는 화면과 세부 정보를 보여주는 화면으로 나눠 보여준다. 화면이 좀 큰 태블릿 같은 경우에는 두 분할로 나눠 한쪽에는 목록 정보를 보여주고 나머지 한쪽에는 그 목록의 세부 정보를 보여주도록 화면을 구성할 수 있다. 😶 창 분할 기준 화면이 작으..
😶 gradle dependencies testImplementation 'junit:junit:4.+' testImplementation 'androidx.arch.core:core-testing:2.1.0' 😶 LiveData Object 테스트하기 특별한 명시가 없다면, 단위 테스트에서는 모든 것이 메인 스레드(=UI 스레드)에서 실행되는 것으로 가정한다. LiveData 는 값이 변경되는 즉시 UI를 업데이트하는데 UI는 메인 스레드(=UI 스레드)에서 업데이트되어야 한다. 하지만 LiveData 는 메인 스레드에서 엑세스할 수 없기 때문에 메인 스레드를 호출하면 안 된다고 명시해야 한다. 명시는 다음과 같다. class ViewModelTests { @get:Rule var instantTask..
😶 Task 와 Back Stack 앱을 런처 아이콘을 클릭해 처음 시작하면 안드로이드는 시작 Activity 로부터 새로운 Task 를 생성한다. Activity 의 모음을 Task 라고 부른다. Activity 는 Back Stack 이라고 불리는 스택에 정렬되고 맨 위에 있는 Activity 가 사용자에게 보이고 상호작용할 수 있다. Back Stack 은 사용자가 이전 화면(Activity)으로 돌아가길 원할 때 유용하다. 시작 Activity 로부터 새로운 Activity 들이 계속 시작되고 백 스택에 쌓이다가 사용자가 이전 화면으로 돌아가길 원하거나 현재 Activity 가 종료되면 Back Stack 의 상위(현재)Activity 가 제거되고 그 이전 화면(Activity)으로 되돌아가 다시..
😶 기본 선언 + ViewModel MutableLiveData 는 Mutable 이 붙어있으므로 변경가능하다. LiveData 로 선언된 변수는 값을 직접 변경할 수 없다. class OrderViewModel : ViewModel(){ private val _quantity = MutableLiveData() val quantity: LiveData get() = _quantity } 😶 Transformations.map() LiveData 에 Transformations 메서드를 사용하면 LiveData 의 값을 다른 값으로 변경할 수 있다. private val _price = MutableLiveData() val price: LiveData = Transformations.map(_price..