본문 바로가기

Android5

채팅 메시지 Badge 커스텀 뷰 구현 (Feat. MeasureSpec) 제 채팅 앱 프로젝트에서 메시지 배지 기능을 추가하게 되었습니다. 이 기능을 추가하면서 MeasureSpec에 관해 조금 해맸기 때문에 기록으로 남깁니다. 요구사항 카카오톡, 라인, iOS 등의 배지 형태는 대충 이런 모습입니다. 이처럼, 최소 1:1 비율로 유지하고 있다가, 글자 수가 많아지면 너비가 늘어나는 배지를 구현할 것입니다. 해결 과정 간단하게 TextView에 빨간 백그라운드 컬러를 입히고 layout_width에 wrap_content 속성을 줬습니다. layout_width="wrap_content" layout_height="wrap_content" 당연하게도 너비가 높이보다 짧은 상황이 존재하게됩니다. 여기서 layout_constraintDimensionRatio="1:1" 옵션을 .. 2023. 7. 1.
Compose 컴파일러 Part 2 : Compose annotations @Composable @Composable에 관한 내용을 살펴보시려면 아래 링크를 참고하시기 바랍니다. https://ducorner.tistory.com/11 Compose 내부 구조 이 글은 2020.08.29에 작성된 Compose 세부구현에 관한 문서를 바탕으로 정리한 글이므로, 포스팅 작성 시기의 세부구현과는 다를 수 있음을 알려드립니다. 원문 : https://medium.com/androiddevelopers/under-the- ducorner.tistory.com @ExperimentalComposeApi 아직 안정화되지 않은 Composable이나 클래스에 적용되는 어노테이션입니다. 향후 변경될 수 있거나, 제거될 수 있음을 암시합니다. @ComposeCompilerApi 이 어노테이션은.. 2023. 4. 13.
Compose 내부 구조 이 글은 2020.08.29에 작성된 Compose 세부구현에 관한 문서를 바탕으로 정리한 글이므로, 포스팅 작성 시기의 세부구현과는 다를 수 있음을 알려드립니다. 원문 : https://medium.com/androiddevelopers/under-the-hood-of-jetpack-compose-part-2-of-2-37b2c20c6cdd Under the hood of Jetpack Compose — part 2 of 2 Under the hood of Compose medium.com @Composable Compose를 사용해보셨다면, 많은 코드에서 @Composable 어노테이션을 보셨을겁니다. 하지만 Compose는 어노테이션 프로세서가 아닙니다. Compose는 Kotlin 타입 체킹과 코.. 2023. 3. 30.
Compose 도넛홀 스키핑 (Donut-hole skipping) Composition 초기 Composition시 처음으로 Composable을 실행할 때 Composition에서 UI를 기술하기 위해 호출하는 Composable를 추적합니다. 그런 다음에 앱 상태가 변경되면 Recomposition을 예약합니다. Recomposition은 Compose가 상태 변경사항에 따라 변경될 수 있는 Composable을 다시 실행한 다음 변경사항을 반영하도록 Composition을 업데이트하는 것입니다. Composition 초기 Composition을 통해서만 생성되고 Recomposition을 통해서만 업데이트될 수 있습니다. Composition을 수정하기 위해서는 Recomposition을 이용해야합니다. Composition 공식문서를 참고해주세요. https:/.. 2023. 3. 28.
Compose 컴파일러 Part 1 : A Kotlin compiler plugin Compose 컴파일러는 Kotlin 컴파일러 플러그인입니다. Compose를 사용해보신 분이라면 Kotlin 함수에 @Composable 어노테이션을 붙인 함수는 Composable 함수로 변환되는 것은 알고 계실겁니다. 보통, 코틀린에서 어노테이션 처리는 kapt이나 ksp 의해 이루어집니다. 하지만 Compose는 일반적인 어노테이션 프로세서로 처리하지 않습니다. Compose 컴파일러는 코틀린 컴파일러의 플러그인입니다. 자바로 Compose를 사용할 수 없는 이유이기도 합니다. 우선 kapt 작동 방식을 생각해봅시다. 코틀린에는 자체적으로 어노테이션 프로세싱을 지원하지 않기 때문에, 자바의 어노테이션 프로세서를 이용해야하고, 그걸 이루는 것이 kapt이죠. 덕분에 자바 Stub이 생성되고, 절차가.. 2023. 3. 21.