이 글의 원문은 여기서 확인하실 수 있으며 블로그 리뷰에는 노현석(GDE)님이 참여해주셨습니다.
오늘 Android의 최신 네이티브 UI 도구 키트인 Jetpack Compose 버전 1.1이 출시됩니다. 이와 더불어 저희는 앞으로도 계속 로드맵을 발전시켜 나가고자 합니다. 이번 릴리스에는 향상된 초점 처리, 터치 대상 크기 조정, ImageVector 캐싱, Android 12 스트레치 오버스크롤 지원과 같은 새로운 기능이 포함됩니다. 또한, Compose 1.1은 이전에 다수의 실험용 API를 안정적 버전으로 발전시키고 최신 버전의 Kotlin을 지원합니다. 샘플, 코드랩, Accompanist 라이브러리가 Compose 1.1과 함께 작동하도록 업데이트를 이미 완료했습니다.
안정적인 신규 기능과 API
이미지 벡터 캐싱
Compose 1.1에는 대폭적인 성능 향상을 가져오는 이미지 벡터 캐싱이 도입되었습니다. 주어진 리소스 ID와 테마로 파싱되는 ImageVector의 모든 인스턴스를 캐싱하기 위해 painterResource API에 캐싱 메커니즘을 추가했습니다. 캐시는 구성 변경 시에 무효화됩니다.
터치 대상 크기 조정
Compose 1.0과 관련하여, Material 구성 요소는 Material 접근성 지침 터치 대상 크기를 충족하도록 레이아웃 공간을 확장합니다. 예를 들어, RadioButton의 터치 대상은 RadioButton의 크기를 더 작게 설정해도 48x48dp의 최소 크기로 확장됩니다. 이에 따라 Compose Material이 머티리얼 디자인 구성 요소의 같은 동작에 맞게 조정되어, View와 Compose를 혼합할 경우에도 일관된 동작을 제공합니다. 또한, 이렇게 변경함으로써 Compose Material 구성 요소를 사용하여 UI를 만들 때 터치 대상 접근성에 대한 최소 요구 사항이 충족되도록 보장합니다.
이러한 변경으로 인해 기존의 레이아웃 로직이 정상적으로 동작하지 않는 경우, LocalMinimumTouchTargetEnforcement를 false로 설정해 이 동작을 비활성화하지만, 이 경우 앱의 사용성이 저하될 수 있다는 점을 유념해 주의하여 사용해야 합니다.
RadioButton 터치 대상 업데이트
왼쪽: Compose 1.0, 오른쪽: Compose 1.1
실험용 API에서 안정적인 API로
여러 API가 실험적 단계에서 안정적 단계로 발전했습니다. 주요 사항은 다음과 같습니다.
새로운 실험용 API
저희는 Compose에 새로운 기능을 계속 제공하고 있습니다. 그중 몇 가지 주요 사항을 소개합니다.
이제는 rememberSaveable을 사용할 때 AnimatedContent를 저장하고 복원할 수 있습니다.
Modifier.animateItemPlacement()를 사용하여 LazyColumn/LazyRow 항목 위치를 애니메이션화할 수 있습니다.
새로운 BringIntoView API를 사용하여 임의의 항목을 스크롤하여 표시하도록 하는 요청을 상위 요소로 보낼 수 있습니다.
@OptIn으로 새 API를 사용해 보신 후 여러분의 소감을 들려주세요!
참고: Compose 1.1을 사용하려면 Kotlin 1.6.10 버전을 사용해야 합니다. 자세한 내용은 Compose와 Kotlin의 호환성 지도를 확인해 보세요.
다음 단계가 궁금하신 경우, 업데이트된 로드맵을 통해 지연 항목 애니메이션, 다운로드 가능한 글꼴, 이동 가능한 콘텐츠 등, 현재 구상 및 개발 중인 기능을 확인해 보세요!
Jetpack Compose는 안정적인 상태에서 바로 프로덕션 단계로 넘어갈 준비가 되어 있으며 개발자 여러분이 요청하는 기능을 계속 추가하고 있습니다. 수만 개의 앱이 이미 프로덕션 환경에서 Jetpack Compose를 사용하기 시작한 것을 보고 무척 뿌듯했는데, 앞으로도 개발자 여러분이 만드실 다양한 앱이 너무나도 기대됩니다!
알파 및 베타 버전에 대해 Issue Tracker로 제출해 주신 모든 버그 신고와 기능 요청에 감사드립니다. Compose를 개선하고 필요한 API를 구축하는 데 큰 도움이 됩니다. 앞으로도 계속 소중한 의견을 주시고 Compose 개선에 많은 도움을 주세요!
Compose를 잘 활용해보시기 바랍니다!