Glance fornisce un'API per gestire il tema cromatico. Per altri attributi di stile, come TextStyle, dichiara variabili di primo livello.
Aggiungi colori
Glance fornisce un'implementazione dei colori Material pronta all'uso. Per utilizzare il tema integrato, racchiudi il componibile di primo livello con GlanceTheme, come mostrato nell'esempio seguente.
Sui dispositivi che supportano i colori dinamici, questo tema deriva dai colori della piattaforma specifici dell'utente. Su altri dispositivi, viene utilizzato il tema di base di Material. Utilizza GlanceTheme.colors per applicare lo stile con i colori del tema
Wrapped. Puoi utilizzare questi valori del tema ovunque sia necessario un colore.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
Per personalizzare il tema, puoi passare colors a GlanceTheme. Glance
fornisce la libreria di interoperabilità androidx.glance:glance-material per
Material 2 e androidx.glance:glance-material3 per il supporto dei colori
Material 3.
Ad esempio, fornisci i colori Material esistenti della tua app all'API ColorProviders per creare una combinazione di colori Glance, come mostrato nello snippet seguente:
// 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 ) }
Fornisci i colori dello schema al GlanceTheme che aggrega tutti i tuoi elementi componibili, come mostrato nell'esempio seguente:
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), // ... ) }
Se preferisci utilizzare i colori dinamici dello sfondo, se supportati, e la combinazione di colori della tua app in caso contrario, puoi passare in modo condizionale la combinazione di colori della tua app in GlanceTheme. come mostrato nello snippet seguente:
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), // ... ) }
Aggiungi forme
Per fornire forme o ombre speciali al widget dell'app, utilizza l'API Android Drawables.
Ad esempio, lo snippet seguente mostra come creare un elemento drawable (una forma):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>
Forniscilo al composable di destinazione:
GlanceModifier.background( imageProvider = ImageProvider(R.drawable.button_outline) )