사진: Unsplash의Dan Chung 드디어 Compose Navigation에서 Type Safety를 지원합니다! 이전에 Compose를 해보지 않으셨다면 모르시겠지만, 이전의 Compose Navigation을 해보셨다면 해당 방식이 마음에 안드셨던 분들이 많았을 겁니다. 불만이 많으셨던 분들을 위해 Type Safety Compose Navigation에 대해 간략히 살펴보고 제가 작성한 코드를 마이그레이션 해보고자 합니다. 필요한 Gradle은 아래와 같습니다.[versions]...kotlinxSerializationJson = "1.6.3"kotlinxSerialization = "1.9.0"navigationCompose = "2.8.0-alpha08" [libraries]...a..
사진: Unsplash의R Mo 이번 게시글에서는 Compose에서 어떻게 WindowInsets에 대응하는지 아래의 공식문서로 공부해보고자 합니다. Compose의 창 인셋 | Jetpack Compose | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Compose의 창 인셋 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 플랫폼은 상태 표시줄 및 탐색 developer.android.com WindowInsets? `WindowInsets`에 대해서 잘 알지 못하는 분들을 위해 먼저 설명해 보겠습니다. WindowInsets은 `Window`와 `Insets`으로 나눠 설명하면 매우 쉽게 이..
사진: Unsplash의Malcolm Lightbody 컴포즈는 너무나도 편리하지만, 배우면 배울수록 내부의 동작을 알지 못하면 안 된다는 생각이 듭니다. View 시스템과는 다른 방식으로 UI를 그리고 있기 때문에 자칫 잘못하면 부분별 한 남용으로 퍼포먼스가 매우 떨어지게 될 수 있습니다. 그렇기 때문에 이번 게시글에서는 컴포즈의 Snapshot에 대해서 배우고 공부해보고자 합니다. 이 게시글은 아래의 글을 보고 공부한 내용을 다룹니다. Introduction to the Compose Snapshot system Jetpack Compose introduces a novel way to handle observable state. For an introduction that adds some... d..
사진: Unsplash의hannah joshua Xml과 Compose의 가장 큰 차이는 명령형과 선언형에 있다고 사람들은 말합니다. 하지만, 저는 이를 이해하기가 상당히 어려웠습니다. 그래서 이번 게시글에서는 명령형과 선언형, 그리고 xml과 Compose의 패러다임에 대해 공부하고자 합니다. 명령형 vs 선언형 명령형 프로그래밍은 안드로이드의 전통적인 UI 개발 방법입니다. 명령형은 말 그대로, 컴파일러에게 원하는 작업을 단계별로 알려주는 방식입니다. C#을 사용해서 간단한 예를 들어보겠습니다. 아래에는 숫자 5개가 있습니다. List collection = new List { 1, 2, 3, 4, 5 }; 명령형 프로그래밍 방식으로 이러한 숫자들에서 홀수를 찾기 위해서는 아래와 같이 코드를 작성할 ..
사진: Unsplash의David Libeert 이번 게시글에서는 Compose에서 빼놓을 수 없는, 모든 곳에 사용되는 Remember에 대하여 정복하고자 합니다. Remember가 필요한 이유 Remember에 대해 자세히 알아보기 전에, 먼저 Remember가 왜 필요한지 알아보려고 합니다. 아래의 Composable 함수를 한번 보겠습니다. @Composable fun Counter() { var counter by mutableStateOf(0) Column( modifier = Modifier.fillMaxSize() ) { Text( text = "Counter: $counter", ) Button( onClick = { counter++ }) { Text( text = "더하기", ) } ..
사진: Unsplash의Tahlia Doyle List에 대해서 배울 때, 우리는 일반적으로 MutableList와 비교하며 List는 변경될 수 없는 Immutable한 컬렉션이라고 배웠습니다. 다만, 이는 큰 관점에서는 틀린 정보입니다. 그래서 이번 게시글에서는 List가 왜 Immutable하지 않는지, 그리고 Immutable한 컬렉션은 뭐가 있는지 알아보고자 합니다. List는 Immutable하지 않다!List는 Read-only라고 말합니다. 변경할 수 없고, 오직 읽을 수만 있는 컬렉션이라고 우리는 배워왔습니다. 다만, 이는 넓은 관점에서는 틀린 말입니다. 아래의 코드를 보겠습니다. 변수 `number`는 val로 선언되어 있기 때문에 변경될 수 없습니다.class Example { ..
사진: Unsplash의Tim Wildsmith 안드로이드의 최신 버전(저의 경우에는 Hedgehog)을 사용하고 계신다면, 프로젝트를 시작할 때의 기본 설정이 Compose에 최적화된 설정이라는 것을 알고 계실 겁니다. 기본 템플릿에는 Compose와 관련된 기본적인 Gradle 설정이 아래와 같이 되어 있습니다. ... android { ... buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.4.3" } ... } dependencies { implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.lifecycle:lifec..
사진: Unsplash의Siora Photography 안드로이드 개발을 하면서 의미도 모르고 사용했던 것이 있습니다. 바로 dp와 sp입니다. 최근에 xml을 작성해 보신 분들이라면, 분명 아래의 멘트를 보셨을 겁니다. 또한 Compose 라이브러리에 있는 TextField는 오직 sp만을 지원합니다. 그렇기에 저는 이번 게시글에서 지금까지 그냥 지나쳤던 안드로이드의 크기 단위에 대하여 공부하고자 합니다. 여러 가지 단위 리소스 유형 더보기 | Android 개발자 | Android Developers 이 페이지에서는 부울, 색상, 크기, ID, 정수, 정수 배열, 유형이 지정된 배열 리소스를 비롯하여 외부화할 수 있는 더 많은 리소스 유형을 정의합니다. developer.android.com px 안..