Glance는 색상 테마를 관리하는 API를 제공합니다. TextStyle
와 같은 다른 스타일 속성의 경우 최상위 변수를 선언합니다.
색상 추가
Glance는 즉시 Material 색상의 구현을 제공합니다. 기본 제공 테마를 사용하려면 다음 예와 같이 최상위 컴포저블을 GlanceTheme
로 래핑합니다.
동적 색상을 지원하는 기기에서 이 테마는 사용자별 플랫폼 색상에서 파생됩니다. 다른 기기에서는 Material 기준 테마로 대체됩니다. GlanceTheme.colors
를 사용하여 래핑된 테마의 색상으로 스타일을 지정할 수 있습니다. 색상이 필요한 곳에 테마의 이러한 값을 사용하면 됩니다.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
테마를 맞춤설정하려면 colors
를 GlanceTheme
에 전달하면 됩니다. Glance는 Material 2용 androidx.glance:glance-material
상호 운용성 라이브러리와 Material 3 색상 지원용 androidx.glance:glance-material3
를 제공합니다.
예를 들어 다음 스니펫과 같이 앱의 기존 머티리얼 색상을 ColorProviders
API에 제공하여 Glance 색 구성표를 만듭니다.
// Remember, use the Glance imports // import androidx.glance.material3.ColorProviders // Example Imports from your own app // import com.example.myapp.ui.theme.DarkColors // import com.example.myapp.ui.theme.LightColors object MyAppWidgetGlanceColorScheme { val colors = ColorProviders( light = LightColors, dark = DarkColors ) }
다음 예와 같이 모든 컴포저블을 래핑하는 GlanceTheme
에 구성표의 색상을 제공합니다.
override suspend fun provideGlance(context: Context, id: GlanceId) { // ... provideContent { GlanceTheme(colors = MyAppWidgetGlanceColorScheme.colors) { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
지원되는 경우 배경화면의 동적 색상을 사용하고 그렇지 않은 경우 앱의 색 구성표를 조건부로 사용하려면 GlanceTheme
에서 앱의 색 구성표를 조건부로 전달하면 됩니다. 다음 스니펫에 나와 있습니다.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) GlanceTheme.colors else MyAppWidgetGlanceColorScheme.colors ) { MyContent() } } } @Composable private fun MyContent() { // ... Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
도형 추가
앱 위젯에 특별한 모양이나 그림자를 제공하려면 Android Drawables API를 사용하세요.
예를 들어, 다음 스니펫은 드로어블 (도형)을 만드는 방법을 보여줍니다.
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>
타겟 컴포저블에 제공합니다.
GlanceModifier.background( imageProvider = ImageProvider(R.drawable.button_outline) )