이 글의 원문은 여기서 확인 가능하며 블로그 리뷰에는 이승민(GDE)님이 참여해주셨습니다.
Android 12에서는 많은 Android 사용자를 위한 주요 기능인 앱 위젯을 한층 더 유용하고 보기 좋고, 검색하기 쉽게 개선했습니다(84%의 사용자가 한 가지 이상의 위젯을 사용함). 앱 위젯을 훨씬 더 쉽게 빌드할 수 있도록 도와줄 Jetpack Glance의 첫 번째 알파 버전이 출시됩니다. 이는 홈 화면과 기타 화면을 위한 앱 위젯을 더 빠르고 쉽게 빌드할 수 있도록 설계된 Jetpack Compose Runtime을 기반의 새로운 프레임워크입니다.
한번 사용해 보신 후 여러분의 의견을 공유해 주세요!
Glance는 Jetpack Compose에서 익히 보던 것과 유사한 현대적인 선언형 Kotlin API를 제공하므로, 훨씬 적은 코드로 보기에도 좋고 반응이 빠른 앱 위젯을 빌드할 수 있습니다.
Glance “Hello World” 위젯 샘플
class GreetingsWidget(private val name: String): GlanceAppWidget() { @Composable override fun Content() { Text(text = "Hello $name") }}class GreetingsWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget = GreetingsWidget("Glance")}
Glance는 ‘한눈에 볼 수 있는’ 경험을 만드는 기본 Composable 세트를 제공합니다. 이제 앱 위젯 구성 요소를 시작으로 앞으로 더 많은 기능이 제공될 예정입니다. Glance는 Jetpack Compose 런타임을 사용하여 Composable을 실제 RemoteViews로 변환하여 앱 위젯에 표시할 수 있습니다.
Glance는 Compose를 활성화해야 하며 Runtime, Graphics 및 Unit UI Compose 레이어에 의존하지만, 다른 기존 Jetpack Compose UI 요소와 직접적으로 호환되지 않습니다 상호 운용할 수 없습니다. 하지만 앱 내의 상태 또는 기타 로직을 공유하여 한눈에 볼 수 있는 UI를 만들 수 있습니다.
이 초기 릴리스에는 기존 RemoteViews와의 호환성 제공 외에도 앱 위젯을 빌드할 수 있게 해주는 기본 API가 도입됩니다.
다음은 라이브러리가 제공하는 내용을 한눈에 볼 수 있게 정리한 개요입니다.
GlanceAppWidget 및 GlanceAppWidgetReceiver를 사용하여 앱 위젯을 선언합니다.
Glance Composable(Box, Row, Column, Text, Button, LazyColumn, Image, Spacer)로 구성된 초기 집합으로 UI를 구성할 수 있습니다.
GlanceModifier 메서드를 사용하여 Composable에 특수 키를 적용합니다.
미리 정의된 Action으로 사용자 상호 작용을 처리합니다.
actionStartActivity
actionRunCallback
actionStartService
actionStartBroadcastReceiver
ActionParameters로 Action에 매개 변수를 제공합니다.
SizeMode.Single, SizeMode.Exact 또는 SizeMode.Responsive를 정의하여 다양한 크기 모드를 처리합니다.
GlanceStateDefinition을 제공하여 GlanceAppWidget state를 지속합니다.
LocalContext, LocalState, LocalGlanceId, LocalSize와 같은 로컬 컴포지션.
기존 RemoteViews에 AndroidRemoteViews Composable 호환성을 갖춥니다.
기본 테마 설정과 추가적인 Android Studio 지원 등을 통해 더 많은 기능을 제공할 예정입니다. 새로운 릴리스를 계속 기대해 주세요.
참고: minSDK의 버전은 21이지만 SDK와의 호환성은 23버전까지만 지원합니다.
GitHub에서 샘플을 확인하여 빠르게 시작해 보세요. Glance는 최신 버전의 안정적 Android Studio에서 작동하지만 Compose Runtime에 의존하므로, the Jetpack Compose 문서에 안내되어 있는 단계에 따라 먼저 Glance를 설정하세요.
이 외에도 더 높은 수준의 쇼케이스를 보려면 AndroidX 저장소의 데모를 확인해 보세요.
ResponsiveAppWidget.kt 데모
알파 버전에서는 API에 대해 여러분의 의견이 반영될 수 있으니 자유롭게 의견과 경험을 공유해 주세요!
Glance와 함께 즐거운 시간 보내시길 바랍니다!