Glance menyediakan API untuk mengelola tema warna. Untuk atribut gaya lainnya,
seperti TextStyle
, deklarasikan variabel tingkat teratas.
Menambahkan warna
Glance menyediakan implementasi warna Material yang siap pakai. Untuk menggunakan
tema bawaan, gabungkan composable tingkat atas dengan GlanceTheme
, seperti yang ditunjukkan di
contoh berikut.
Pada perangkat yang mendukung warna dinamis, tema ini berasal dari
warna {i>platform<i} khusus pengguna. Di perangkat lain, permintaan ini kembali ke Material
tema dasar pengukuran. Gunakan GlanceTheme.colors
untuk memberi gaya dengan warna yang sudah digabungkan
tema. Anda dapat menggunakan nilai-nilai ini dari tema di mana pun warna diperlukan.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
Untuk menyesuaikan tema, Anda dapat meneruskan colors
ke GlanceTheme
. Sekilas
menyediakan library interoperabilitas androidx.glance:glance-material
Material 2, dan androidx.glance:glance-material3
untuk warna Material 3
dukungan teknis IT.
Misalnya, berikan warna material yang sudah ada di aplikasi Anda ke ColorProviders
API untuk membuat skema warna Glance, seperti ditunjukkan dalam cuplikan berikut:
// 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 ) }
Berikan warna dari skema hingga GlanceTheme
yang menggabungkan semua
composable, seperti yang ditunjukkan dalam contoh berikut:
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), // ... ) }
Jika Anda lebih suka menggunakan warna dinamis dari wallpaper jika didukung, dan
skema warna aplikasi jika tidak, Anda bisa meneruskan skema warna aplikasi secara kondisional
di GlanceTheme
. Hal ini ditunjukkan dalam cuplikan berikut:
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), // ... ) }
Menambahkan bentuk
Untuk memberikan bentuk atau bayangan khusus ke widget aplikasi Anda, gunakan Android API Drawable.
Misalnya, cuplikan berikut menunjukkan cara membuat drawable (sebuah bentuk):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>
Berikan elemen tersebut ke composable target:
GlanceModifier.background( imageProvider = ImageProvider(R.drawable.button_outline) )