일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 단위테스트
- dagger2
- 컴포즈
- 안드로이드
- 파이썬
- 자료구조
- ViewModel
- 공격적 프로그래밍
- 코틀린
- Python
- Di
- Kotlin
- mock
- 디자인패턴
- Observable
- 코딩테스트
- MVVM
- 제한함수
- 안정성
- compose
- 깃
- Android
- rxjava
- 테스트의 장점
- Room
- 안드로이드 디자인패턴
- UnitTest
- 유닛테스트
- git
- Jetpack
- Today
- Total
목록안드로이드 (13)
세상을 바꾸는 개발자
Material Design 3 in Compose제트팩 컴포즈는 머티리얼 디자인의 차세대 진화 버전인 머티리얼 디자인 3를 구현합니다. 머티리얼 3에는 업데이트된 테마, 컴포넌트 및 동적 색상과 같은 머티리얼 유 개인화 기능이 포함되어 있으며, 안드로이드 12 이상의 새로운 비주얼 스타일 및 시스템 UI와 조화를 이루도록 설계되었습니다. 참고: "머티리얼 디자인 3", "머티리얼 3", "M3"라는 용어는 서로 바꿔서 사용할 수 있습니다. 기존 머티리얼 디자인 사양 및 해당 androidx.compose.material 라이브러리는 "머티리얼 디자인 2", "머티리얼 2" 또는 "M2"로 불립니다. 아래에서는 Reply 샘플 앱을 예로 들어 머티리얼 디자인 3 구현을 보여줍니다. 응답 샘플은 전적으로..
선언적 프로그래밍 패러다임 지금까지 안드로이드 뷰 계층 구조는 UI 위젯의 트리로 표현할 수 있었습니다. 사용자 상호작용 등으로 인해 앱의 상태가 변경되면 현재 데이터를 표시하기 위해 UI 계층구조를 업데이트해야 합니다. UI를 업데이트하는 가장 일반적인 방법은 findViewById()와 같은 함수를 사용하여 트리를 탐색하고 button.setText(String), container.addChild(View) 또는 img.setImageBitmap(Bitmap) 같은 메서드를 호출하여 노드를 변경하는 것입니다. 이러한 메서드는 위젯의 내부 상태를 변경합니다. 뷰를 수동으로 조작하면 오류가 발생할 가능성이 높아집니다. 데이터가 여러 곳에 렌더링되는 경우 데이터를 표시하는 뷰 중 하나를 업데이트하는 것을..
컴포즈 gradle 설정Compose를 사용하려면 먼저 프로젝트에 몇 가지 빌드 구성을 추가해야 합니다. 앱의 build.gradle 파일에 다음 정의를 추가합니다 android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.13" }} 몇 가지 주의해야 할 사항1. Android BuildFeatures 블록 내에서 compose 플래그를 true로 설정하면 컴파일 기능이 활성화됩니다.2. ComposeOptions 블록에 정의된 Kotlin 컴파일러 확장 버전 관리는 Kotlin 버전 관리와 연동됩니다. 호환성 맵을 참조하여 프로젝트의 Ko..
Compose를 도입해야 하는 이유Jetpack Compose는 네이티브 UI를 빌드하기 위한 Android의 최신 툴킷입니다. 더 적은 코드, 강력한 도구, 직관적인 Kotlin API로 앱에 생명을 불어넣어 Android에서 UI 개발을 간소화 및 가속화합니다. 안드로이드 UI를 더 빠르고 쉽게 빌드할 수 있습니다. Compose를 개발하는 동안 다양한 파트너와 협력하여 이러한 모든 이점을 직접 경험하고 몇 가지 핵심 사항을 공유했습니다. Less code 코드를 적게 작성하면 개발의 모든 단계에 영향을 미칩니다. 작성자는 테스트 및 디버깅할 코드가 줄어들어 당면한 문제에 집중할 수 있고 버그 발생 가능성이 줄어들며, 검토자나 관리자는 읽고, 이해하고, 검토하고, 유지 관리해야 할 코드가 줄어듭니다...
안녕하세요~ 헬창코딩입니다. 오늘은 publish 연산자와 connect 연산자에 대해서 알아보도록 하겠습니다~ ConnectableObservable은 Hot Observable을 구현할 수 있도록 도와주는 타입으로 아무 Observable 타입이나 publish 연산자를 이용하여 간단히 ConnectableObservable로 변환할 수 있습니다. (Hot Observable은 저번 시간 포스트를 참고해주세요) ConnectableObservable은 구독을 요청해도 Observable은 데이터를 발행하지 않습니다. connect() 연산자를 호출할 때 비로소 아이템을 발행하기 시작합니다. ConnectableObservable src = Observable.interval(1, TimeUnit.SE..
안녕하세요~ 헬창코딩입니다. 오늘은 Cold Observable과 Hot Observable의 차이에 대해서 알아볼까 합니다. Observable을 구현하는 방식에서 Observable과 Observer 사이에 미묘한 동작 차이가 있습니다. 이를 Cold Observable 과 Hot Observable이라고 부릅니다. Cold Observable은 지금까지 앞에서 다뤄 왔던 예제들처럼 Observable에 구독을 요청하면 아이템을 발행하기 시작합니다. 아이템은 처음부터 끝까지 발행이 되고, 임의로 종료하지 않는 이상 여러 번 요청에도 처음부터 끝까지 발행하는 것을 보장합니다. interval 연산자를 이용하여 1초마다 아이템을 발행하는 Cold Observable을 살펴보겠습니다. Observable ..
안녕하세요 ~ 헬창코딩입니다. 오늘은 Rxjava의 Observable의 형태중 Completable에 대해 알아보겠습니다. Completable은 아이템을 발행하지 않고, 단지 정상적으로 실행이 종료되었는지에 대해 관심을 갖습니다. 그러므로 Emitter에서 onNext()난 onSuccess() 같은 메서드는 없고 onComplete()와 onError()만 존재합니다. Completable.create(emitter -> { emitter.onComplete(); }).subscribe(() -> Log.d("log_test", "onComplete")); 결과 Completable.fromRunnable(() -> { }).subscribe(() -> Log.d("log_test", "onComp..
안녕하세요~ 헬창코딩입니다. 이번 시간에는 간단한 기본 연산자인 rxjava의 just 연산자에 대해서 알아보도록 하겠습니다. just 연산자는 해당 아이템을 그대로 발행하는 Observable을 생성해줍니다. just() 연산자로 넣은 아이템을 차례로 발행하며, 한 개의 아이템을 넣을 수도 있고, 타입이 같은 여러 개의 아이템을 넣을 수도 있습니다. RxJava에서는 기본적으로 null을 허용하지 않아, just의 인자로 null을 넣으면 안 됩니다. null을 발행하면 오류가 발생합니다. 만약 아무런 아이템을 발행하지 않는 빈 Observable을 만들고 싶다면 Observable, empty() 연산자를 사용하면 됩니다!