Post

Dynamic Color(s)

ダイナミックカラーのいいドキュメントが見当たりません.

アプリをダイナミックカラーにするためには,Theme.Material3.DynamicColors.*テーマ(またはそれを継承するテーマ)をセットするだけで十分です.

app/src/main/res/values/themes.xml:

1
2
3
4
5
<resources>
    <style name="Theme.App" parent="Theme.Material3.DynamicColors.DayNight.NoActionBar">
        ...
    </style>
</resources>

app/src/main/AndroidManifest.xml:

1
2
3
4
5
6
7
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android">
    <application
        android:theme="@style/Theme.App">
        ...
    </application>
</manifest>

Theme.Material3.DynamicColors.DayNight.NoActionBarテーマは,アプリをMaterial Design 3,ダイナミックカラー,ダークテーマ対応windowNoTitleをtrueにするテーマです.

Theme.Material3.DynamicColors.テーマ(またはそれを継承するテーマ)ではなく,Theme.Material3.テーマ(またはそれを継承するテーマ)を使用することもできますが,アプリをダイナミックカラーにするためには,DynamicColors.applyToActivityIfAvailable()を呼び出す必要があります.

app/src/main/java/com/github/manabu_nakamura/test/MainActivity.java:

1
2
3
4
5
6
7
8
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DynamicColors.applyToActivityIfAvailable(this);
        ...
    }
}

ダイナミックカラーにより色の選択が楽になります.細かい設定も可能です.しかし,問題も残っています(https://github.com/material-components/material-components-android/issues/3969https://github.com/material-components/material-components-android/issues/4139https://issuetracker.google.com/issues/400894495https://issuetracker.google.com/issues/369781732).Gboardは.アプリがダイナミックカラーかどうかに追随する設定はありません(アプリのテーマにも追随しません.例えば,システム=ライトテーマ,アプリ=ダークテーマの時,Gboard=ライトテーマになります.ちなみに,Windows 11も同様です).写真選択ツールファイル選択ツールも似たような感じです.非常に残念です.

ライブラリも公開されています(https://github.com/material-foundation/material-color-utilities).余談ですが,新しいTheme.Material3Expressive.テーマが開発されていますが,Theme.Material3Expressive.DynamicColors.テーマがおかしいです(https://github.com/material-components/material-components-android/issues/4704).Theme.MaterialComponents.*テーマはMaterial Design 1,2用のテーマです.

This post is licensed under CC BY 4.0 by the author.