Glance fournit une API pour gérer le thème de couleurs. Pour les autres attributs de style, tels que TextStyle
, déclarez les variables de niveau supérieur.
Ajouter des couleurs
Glance propose une implémentation prête à l'emploi des couleurs Material. Pour utiliser le thème intégré, encapsulez votre composable de premier niveau avec GlanceTheme
, comme illustré dans l'exemple suivant.
Sur les appareils compatibles avec les couleurs dynamiques, ce thème est dérivé des couleurs spécifiques à l'utilisateur de la plate-forme. Sur d'autres appareils, le thème de référence de Material est appliqué. Utilisez GlanceTheme.colors
pour appliquer un style avec les couleurs du thème encapsulé. Vous pouvez utiliser ces valeurs du thème partout où une couleur est nécessaire.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
Pour personnaliser le thème, vous pouvez transmettre colors
à GlanceTheme
. Glance fournit la bibliothèque d'interopérabilité androidx.glance:glance-material
pour Material 2 et androidx.glance:glance-material3
pour la prise en charge des couleurs Material 3.
Par exemple, fournissez les couleurs Material existantes de votre application à l'API ColorProviders
pour créer un jeu de couleurs Glance, comme indiqué dans l'extrait suivant:
// 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 ) }
Fournissez les couleurs du schéma au GlanceTheme
qui encapsule tous vos composables, comme illustré dans l'exemple suivant:
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), // ... ) }
Si vous préférez utiliser les couleurs dynamiques du fond d'écran lorsqu'elles sont disponibles, et le jeu de couleurs de votre application dans le cas contraire, vous pouvez transmettre de manière conditionnelle le jeu de couleurs de votre application dans GlanceTheme
. Ceci est illustré dans l'extrait de code suivant:
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), // ... ) }
Ajouter des formes
Pour ajouter des formes ou des ombres spéciales à votre widget d'application, utilisez l'API Android Drawables.
Par exemple, l'extrait de code suivant montre comment créer un drawable (une forme):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>
Fournissez-le au composable cible:
GlanceModifier.background( imageProvider = ImageProvider(R.drawable.button_outline) )