Glance には、カラーテーマを管理するための API が用意されています。TextStyle などの他のスタイル属性については、最上位の変数を宣言します。
色の追加
Glance には、すぐに使えるマテリアル カラーの実装が用意されています。組み込みテーマを使用するには、次の例に示すように、トップレベルのコンポーザブルを GlanceTheme でラップします。
ダイナミック カラーをサポートするデバイスでは、このテーマはユーザー固有のプラットフォーム カラーから派生します。他のデバイスでは、マテリアル ベースライン テーマにフォールバックします。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 には、マテリアル 2 の androidx.glance:glance-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) )