일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 큐 자바 코드
- 안드로이드 유닛 테스트 예시
- 안드로이드 레트로핏 사용법
- 서비스 vs 쓰레드
- Rxjava Observable
- 안드로이드 라이선스
- rxjava hot observable
- android ar 개발
- 2022 플러터 설치
- 자바 다형성
- android retrofit login
- 안드로이드 유닛 테스트
- 클래스
- rxjava cold observable
- ANR이란
- rxjava disposable
- 안드로이드 라이선스 종류
- 서비스 쓰레드 차이
- 플러터 설치 2022
- jvm이란
- 스택 큐 차이
- 안드로이드 레트로핏 crud
- jvm 작동 원리
- 객체
- 안드로이드 유닛테스트란
- 스택 자바 코드
- 2022 플러터 안드로이드 스튜디오
- ar vr 차이
- 멤버변수
- 안드로이드 os 구조
- Today
- Total
목록Android (402)
나만을 위한 블로그

※ 모든 코드는 예시 코드기 때문에 실제로 사용하려면 반드시 리팩토링 후 사용한다※ 컴포즈 안 쓴다 몇 차례에 걸쳐 실제 api를 사용하는 간단한 멀티 모듈 안드 프로젝트를 만드는 과정을 포스팅하려고 한다. 사용할 라이브러리는 제목에 써둔 것들 정도다.예제 프로젝트기 때문에 최대한 가볍게 구성했다. 절대 귀찮아서 이렇게 만든 게 아니다 어디까지나 이런 식으로 멀티 모듈 형태와 클린 아키텍처로 짤 수 있다는 걸 보여주기 위한 시리즈다. 이 포스팅은 아래 포스팅을 바탕으로 진행한다. https://onlyfor-me-blog.tistory.com/1052 [Android] 멀티 모듈 프로젝트 구성하고 hilt 적용하기지금까지 app 모듈 안에 data, domain, presentation 폴더를 만들고 그..
이 포스팅에선 Compose를 사용해 리스트뷰를 만들고 아이템을 선택하면 체크상태를 변경해 표시하는 예제를 확인한다. 전체 코드는 아래 영상을 참고했다. https://www.youtube.com/watch?v=pvNcJXprrKM 전체 코드는 아래와 같다. import androidx.compose.foundation.clickableimport androidx.compose.foundation.layout.Arrangementimport androidx.compose.foundation.layout.Rowimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.layout.fillMaxWidthimpo..

※ 모든 코드는 예제기 때문에 실제로 사용하려면 리팩토링, 예외처리를 추가한다 ※ 서버 통신 없이 앱에 저장된 이미지를 사용해 구현했다 이번엔 컴포즈를 사용해서 정해진 이미지들을 계속해서 표시하는 무한 캐러셀 예제를 확인한다.실행하면 아래처럼 작동한다. 코드는 아래와 같다. import androidx.compose.foundation.Imageimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.lazy.LazyRowimport androidx.compose.foundation.lazy.itemsimport androidx.compose.foundation.lazy.rememberLazyListSt..
※ 모든 코드는 예시 코드기 때문에 실제로 쓰려면 반드시 리팩토링, 예외처리를 추가한다 위치 정보를 활용하는 기능 구현 중 액티비티, 프래그먼트 곳곳에 위치 권한을 요청하고 허용, 거절 상태에 따라 분기되는 함수가 보였다.Base 클래스에 빼자니 필요없는 화면도 있어서 아닌 거 같고, 뷰모델에 박아두고 쓰자니 자유롭게 재사용할 수 없는 느낌이라 아닌 거 같아서 이리저리 시험해보다 괜찮아 보이는 방법을 찾은 것 같아 포스팅한다. 코드부터 본다. import android.Manifestimport android.content.Contextimport android.content.pm.PackageManagerimport androidx.core.app.ActivityCompatimport com.googl..

※ 모든 코드는 예시 코드기 때문에 실제로 사용하려면 반드시 리팩토링하고 프로젝트에 맞는 예외처리를 추가해야 한다 이 포스팅은 아래의 영상을 바탕으로 작성했다. https://www.youtube.com/watch?v=Q0Njj-rfEXE 이미지 압축은 구글링해 보면 다양한 방법으로 구현할 수 있다. 아래 코드도 그 예시 중 하나일 뿐이니 이렇게도 구현할 수 있다 치고 넘어가면 좋을 듯하다.먼저 이미지 압축을 담당하는 ImageCompressor의 구현은 아래와 같다. import android.content.Contextimport android.graphics.Bitmapimport android.graphics.BitmapFactoryimport android.net.Uriimport android..

이전 포스팅에서 공유 요소 전환 구현에 사용한 코드에 쓰인 개념들을 확인한다.먼저 SharedTransitionLayout부터 확인한다. https://developer.android.com/reference/kotlin/androidx/compose/animation/package-summary#SharedTransitionLayout(androidx.compose.ui.Modifier,kotlin.Function1) androidx.compose.animation | Android Developersandroidx.appsearch.builtintypes.propertiesdeveloper.android.com@ExperimentalSharedTransitionApi@Composablefun Sh..

※ 공유 요소 전환은 컴포즈 1.7.0부터 사용할 수 있으며 아직 실험 단계라 추후 변경될 수 있음에 주의한다 이 포스팅에서 확인할 것은 안드로이드 디벨로퍼를 바탕으로 공유 요소 전환을 컴포즈로 어떻게 구현하는지다. 공유 요소 전환이란 이름은 생소하지만 앱을 쓰다 보면 한 번쯤은 어디서 봤을 법한 것이다. https://developer.android.com/develop/ui/compose/animation/shared-elements?hl=ko 연락처 리사이클러뷰에서 아이템을 클릭하면 연락처의 사진이 위로 이동하면서 다음 화면으로 이동한다. 플러터를 해 봤다면 Hero 애니메이션과 유사하게 작동하는 걸 알 것이다.이것을 컴포즈로 어떻게 구현할까? 이와 관련한 공식문서가 존재한다. https://dev..

컴포즈로 앱을 만들면서 뷰모델을 구현하다 보면 상태 관리와 관련해서 2가지 선택지를 마주하곤 한다. MutableState와 MutableStateFlow가 그것이다. SharedFlow는 최신 상태를 자동으로 유지하지 않아서 이벤트 기반 작업에 자주 쓰이기 때문에 UI 상태 관련 내용을 다룰 이 포스팅에선 생략하고, MutableState와 MutableStateFlow의 차이를 확인한다. MutableState MutableState는 컴포즈에서 값을 읽고 쓸 수 있는 상태 홀더로, 값의 변경사항을 컴포즈가 자동 추적할 수 있게 한다.값이 바뀌면 안드로이드 시스템은 이 상태에 의존하는 모든 컴포저블 함수들이 리컴포지션되게 한다. 그래서 유저 상호작용, 앱 상태의 변화에 따라 UI를 업데이트해야 하는 ..
※ 모든 코드는 예시 코드기 때문에 사용하려면 반드시 예외처리, 리팩토링 후 사용한다 libs.version.toml 파일에 라이브러리를 하나 추가하고 앱 gradle에 적용한다. [versions]playServicesLocation = "21.3.0"[libraries]play-services-location = { module = "com.google.android.gms:play-services-location", version.ref = "playServicesLocation" }implementation(libs.play.services.location) 그리고 매니페스트에 권한을 추가한다. 액티비티 파일은 아래와 같이 작성한다. import android.Manifestimport andr..

이 포스팅은 아래 링크를 번역한 글이다. https://proandroiddev.com/loading-initial-data-part-2-clear-all-your-doubts-0f621bfd06a0 Loading Initial Data on Android Part 2: Clear All Your DoubtsWhen a user enters a screen, the default data should be fetched by triggering the business logic, whether from the network or local…proandroiddev.com 유저가 입력하면 네트워크 또는 DB에서 비즈니스 로직을 트리거해서 기본 데이터를 가져와야 한다. 사이드 이펙트를 피하기 위해 올바른 트..