전체 글
-
ViewPager2Android 2021. 7. 10. 14:55
ViewPager2 새로운 기능 세로 방향 페이징 지원 - android:orientation="vertical" 속성을 설정, 혹은 setOrientation() 메서드를 사용하여 세로 페이징을 설정할 수 있다. 오른쪽에서 왼쪽 지원 - android:layoutDirection="rtl" 속성을 설정, 혹은 setLayoutDirection() 메서드를 사용하여 설정할 수 있다. - RTL페이징은 언어에 따라 해당하는 경우 자동으로 설정 수정 가능한 프래그먼트 컬렉션 - 기본 컬렉션이 변경되면 notifyDatasetChanged()를 호출하여 UI를 업데이트한다. DiffUtil Class 엑세스 가능 - RecyclerView를 기반으로 빌드되므로 DiffUtil 유틸리티 클래스 엑세스 가능하다...
-
Tests App on Android(2) - RobolectricAndroid 2021. 7. 1. 08:35
Robolectric은 먼저 Gradle을 권장하고 (Android Studio에서 선택한 빌드 시스템이므로) 두 번째로 Bazel을 권장한다. Robolectric은 Android Studio 및 Android Gradle 플러그인 3.2.1 이상에서 가장 잘 작동한다. build.gradle 파일에 다음을 추가한다. android { testOptions { unitTests { includeAndroidResources = true } } } dependencies { testImplementation 'org.robolectric:robolectric:4.4' } Android 스튜디오 3.3 미만에서는 gradle.properties에 다음 줄을 추가한다 android.enableUnitTest..
-
Tests App on Android(1)Android 2021. 6. 28. 17:54
테스트를 하는 이유 장애에 관한 신속한 피드백 개발 주기에서 조기 장애 감지 코드를 최적화할 수 있도록 하는 더 안전한 Code Refactoring 기술적 문제를 최소화하는 안정적인 개발 속도 안드로이드 테스트 종류 Unit Test - 일반적으로 코드의 유닛 단위(메소드, 클래스, 컴포넌트)의 기능을 실행하는 방식 - JVM 상에서 실행되는 local unit tests - 실제 기기 및 에뮬레이터에서 실행되는 instrumented unit tests Integration Tests - 단위 테스트가 완료된 모듈들을 합쳐서 하는 테스트 - 앱에서 데이터가 가공되는 로직 테스트 UI Tests - 사용자 인터랙션(버튼 클릭, 텍스트 입력 등) 테스트 - 단일 앱 UI tests - 멀티 앱 UI te..
-
의존성 주입(Dependency injection)DI 2021. 6. 23. 16:24
의존성 주입(dependency injection)의 법칙 클래스는 종종 작업을 완료하기 위해 다른 클래스를 참조해야 할 때가 있다. 이렇게 참조하는 것을 의존성이라고 한다. 모든 애플리케이션은 그 의존성을 어떤 방식으로든 다루어야 한다. 도표에서 보이듯이 자동차는 엔진이 없으면 동작하지 않는다. 즉, 엔진을 자동차의 의존성이라고 하거나 차가 엔진에 의존한다고 말할 수 있다. class Car { private val engine = Engine() fun start() { engine.start() } } fun main(args: Array) { val car = Car() car.start() } 이 예는 Car 클래스가 자체 Engine을 구성하기 때문에 Car와 Engine은 밀접하게 연결되어 ..
-
Room DatabaseAndroid 2021. 6. 14. 14:25
안드로이드 아키텍처 컴포넌트에 속하는 Room 라이브러리는 SQLite에 대한 추상화 레이어를 제공하여 원활한 데이터베이스 액세스를 지원하는 동시에 SQLite를 완벽히 활용한다. build.gradle 파일에 다음 dependencies를 추가한다. (Kotlin 사용시) dependencies { def room_version = "2.3.0" implementation "androidx.room:room-runtime:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbolic Processing (KSP) k..
-
ConstraintLayout(2)Android 2021. 6. 13. 10:51
constraint(제약조건) Chain은 뷰간의 상호 참조 연결을 할 때, 뷰들을 어떤 방식으로 연결 시킬시켜 표현할지를 결정한다. 수평기준 가장 왼쪽 있는 View 또는 수직 기준으로 가장 상단에 있는 View가 기준(Head)이 된다. chain 스타일은 여러 형태가 존재 할 수 있는데 layout_constraintHorizontal_chianStyle 또는 layout_constraintVertical_chainStyle을 연결된 뷰들의 head에만 적어주면 된다. 기본 chain스타일은 CHAIN_SPREAD이다. Example Spread Chain View들을 골고루 펼쳐 여백을 같게 한다(기본값) Packed chain View들이 똘똘 뭉치게 되고 부모뷰로부터의 여백을 같게 합니다. 여..
-
ConstraintLayout(1)Android 2021. 6. 11. 12:58
ConstraintLayout는 layout에 배치되는 뷰들에 여러 제약(Constraint)을 적용하여 각 뷰의 위치와 크기를 결정한다. 여기서 말하는 "제약(Constraint)"이란, 각 요소들의 최종 위치와 크기를 결정하게 될 조건, 예를 들어, 특정 뷰 왼쪽 사이드를 지정된 뷰의 오른쪽 사이드에 맞추거나, 뷰의 왼쪽, 오른쪽 사이드를 각각 부모 레이아웃의 왼쪽, 오른쪽 사이드에 맞추는 것 등을 말하며, 이러한 각각의 제약(Constraint)은 컨스트레인트레이아웃이 가지는 하나의 레이아웃 속성으로 매핑된다. ConstraintLayout을 프로젝트에 추가 build.gradle 파일에 다음 dependencies를 추가 dependencies { implementation "androidx.co..
-
Room And CoroutinesAndroid 2021. 6. 10. 09:27
Room-Coroutines을 요약, 정리하였다. 앱에서 coroutines과 Room을 사용하려면 Room 2.1로 업데이트하고 build.gradle 파일에 새 종속성을 추가한다. (Kotlin 1.3.0 및 Coroutines 1.0.0 이상 필요) implementation "androidx.room:room-coroutines:${versions.room}" 이제 DAO method를 업데이트하여 일시 중단(suspension) 기능을 사용할 수 있다. @Dao interface UsersDao { @Query("SELECT * FROM users") suspend fun getUsers(): List @Query("UPDATE users SET age = age + 1 WHERE userId ..