jetpack

Android

Android Jetpack Compose ConstraintLayout match constraint

Jetpack Compose에서 ConstraintLayout을 사용하며 겪은 어려움을 공유해보려한다. (내가 Compose에 대한 사전지식이 충분하지 않은 탓이 클 것이라 생각하지만 말이다.) 내가 가장 힘들었던 부분은 제목에 적은 것처럼 match constraint 속성을 어떻게 적용해야하는가였다. match constraint라는 말이 어색할 사람들을 위해 풀어서 설명해보자면 이런 것이다. width, height를 0dp로 설정하고 View의 start, end, top, bottom에 제약 조건을 건다. 그렇게 되면 뷰가 제약 조건에 맞춰 늘어난다. 당연히 Compose에서도 그렇겠거니! 생각을 하고 Modifierdml width, height를 0.dp로 설정한 뒤 실행을 했더니 정말 그대..

Android

Codelab으로 Room 알아보기 - 3. Create the DAO

이번에는 Data Access Object인 DAO를 만들어 볼 것이다. DAO는 안드로이드에서 DB의 insert, delete, update에 대한 편의성을 제공한다. Room DB를 사용할 때 코드에서 함수를 정의하고 호출하여 DB를 쿼리한다. 이러한 함수들은 SQL 쿼리들을 매핑한다. 주석(annotation)을 사용하여 DAO에 이러한 매핑을 정의하면 Room이 필요한 코드를 생성한다. DAO를 DB에 접근하기 위한 인터페이스로 생각하면 된다. 추가로, 쿼리를 생성할 때 컴파일러가 문법 에러를 검사해준다. (개인적으로 잘못된 컬럼을 조회하는 일은 적어질 거라 생각한다) sleep-tracker 데이터베이스에 아래 나열한 것들을 해야한다. night를 삽입한다. 존재하는 night에 종료 시간과 ..

Android

Codelab으로 Room 알아보기 - 2. Create the SleepNight entity(ㄱ)

안드로이드에서 데이터는 데이터 클래스로 표현된다. 이 데이터는 함수 호출에 의해 접근되고 수정될 수도 있다. 그러나, 데이터베이스 세계에서는 데이터에 접근하고 수정하기 위해서는 entity와 query가 필요하다. 엔티티는 속성과 함께 데이터베이스에 저장할 객체나 개념을 의미한다. 우리의 앱 코드에서 테이블을 정의하는 entity class가 필요하다. 해당 클래스의 각 인스턴스는 해당 테이블의 행을 의미한다. Entity class는 데이터베이스의 정보를 표시하고 상호 작용하는 방법을 Room에 알려주는 맵핑이 있다. 우리 앱에서 엔티티는 하룻밤 수면에 관한 정보를 가지고 있을 것이다. 쿼리는 테이블(혹은 테이블 조합)의 정보 또는 데이터 요청이거나 데이터에 대한 작업을 수행하기 위한 요청이다. 일반적..

Android

Codelab으로 Room 알아보기 - 1. Download and inspect the starter app

이번에는 드디어 Room Database에 대해 알아보러 간다. 완전 처음 보는 코드들이 나를 기다리고 있으리라 믿는다. (자랑은 아닌 듯하다) 시작하겠다. 1. Download and run the starter app 먼저 Github에서 앱을 다운로드 받는다. https://github.com/google-developer-training/android-kotlin-fundamentals-starter-apps/tree/master/TrackMySleepQuality-Starter GitHub - google-developer-training/android-kotlin-fundamentals-starter-apps: android-kotlin-fundamentals-starter-apps andro..

Android

Codelab으로 LiveData transform해보기 - 3. 정리(完)

Transforming LiveData LiveData에 transformation을 하고 싶다면 Transformations 클래스의 helper 메소드들을 사용한다. Transformations.map 메소드는 LiveData에 데이터를 변경하고 다른 LiveData 객체를 리턴해준다. Displaying the result of a transformation in a TextView 원본 데이터가 ViewModel의 LiveData로 정의되어 있는지 확인한다. 변수를 정의한다. 어떤 변수가 있다면 Transformations.map 메소드로 transformation을 수행하고 그 값을 변수에 리턴해준다. val newResult = Transformations.map(someLiveData) { ..

Android

Codelab으로 DataBinding 알아보기 - 3. Add LiveData to data binding

데이터 바인딩은 ViewModel 객체와 같이 사용되는 LiveData와 잘 작동한다. 저번 코드랩에서 ViewModel 객체에 데이터 바인딩을 추가했으므로 LiveData를 적용할 준비가 됐다. Add word LiveData to the game_fragment.xml file 이번에는 word 텍스트뷰를 ViewModel안에 있는 LiveData와 직접 바인드한다. 1. xml의 word_text에 text 속성을 추가해준다. 바인딩 변수를 사용해 GameViewModel의 word LiveData 객체로 설정한다. 여기서 우리는 word.value를 사용할 필요가 없다. 대신, 실제 LiveData 객체를 사용할 수 있다. 만약 word 값이 null이면 빈 문자열을 보여줄 것이다. 2. Game..

BonusTrack02.dev
'jetpack' 태그의 글 목록