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/3969,https://github.com/material-components/material-components-android/issues/4139,https://issuetracker.google.com/issues/400894495,https://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用のテーマです.