Glance udostępnia interfejs API do zarządzania motywem kolorystycznym. W przypadku innych atrybutów stylu
np. TextStyle, zadeklaruj zmienne najwyższego poziomu.
Dodaj kolory
Glance umożliwia bezpośrednią implementację kolorów Material. Aby użyć funkcji
z wbudowanym motywem, uzupełnij funkcję kompozycyjną najwyższego poziomu za pomocą funkcji GlanceTheme, jak pokazano to tutaj:
następujący przykład.
Na urządzeniach obsługujących kolory dynamiczne motyw ten jest generowany na podstawie
charakterystyczne dla użytkownika. Na innych urządzeniach wartość domyślna to Material.
motyw bazowy. Użyj kodu GlanceTheme.colors, aby dodać styl do kolorów z zapakowanego produktu
motyw. Tych wartości możesz używać z motywu wszędzie tam, gdzie potrzebny jest kolor.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
Aby dostosować motyw, możesz przekazać colors do GlanceTheme. W skrócie
udostępnia bibliotekę interoperacyjności androidx.glance:glance-material dla
Kolor Material 2 i androidx.glance:glance-material3 w przypadku koloru Material 3
.
Na przykład w tabeli ColorProviders podaj dotychczasowe kolory materiału aplikacji
API do tworzenia schematu kolorów Glance, jak pokazano w tym fragmencie:
// 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 ) }
Podaj kolory od schematu do elementu GlanceTheme, który pasuje do
elementów kompozycyjnych, jak w tym przykładzie:
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), // ... ) }
Jeśli wolisz używać dynamicznych kolorów tapety, gdy jest ona obsługiwana,
schemat kolorów aplikacji, w przeciwnym razie możesz warunkowo przekazać schemat kolorów aplikacji
w GlanceTheme. Widać to w tym fragmencie:
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), // ... ) }
Dodaj kształty
Aby dodać specjalne kształty lub cienie do widżetu aplikacji, użyj Androida Interfejs API Drawables.
Na przykład ten fragment kodu pokazuje, jak utworzyć obiekt rysowalny (kształt):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>
Podaj ją do docelowej funkcji kompozycyjnej:
GlanceModifier.background( imageProvider = ImageProvider(R.drawable.button_outline) )