Androidダークモードへの対応方法
Android ダークモードに対応させるには、以下の手順に従います。
- AndroidManifest.xmlファイルでテーマスタイルをデイナイトテーマに設定します。例:
<application
...
android:theme="@style/AppTheme">
...
</application>
DayNightのテーマはシステムのライト/ダークモード設定に合わせて自動で切り替わります。
- 明るめのモードと暗めのモードにそれぞれ使用する、2つのテーマスタイルファイルを作成します。たとえば、res/values フォルダにスタイルファイル styles.xml を追加し、明るいモードに使用する AppTheme.Light テーマを定義します。
<style name="AppTheme" parent="Theme.AppCompat.Light">
...
</style>
res/values-night フォルダに styles.xml ファイルを作成し、ダークモード用の AppTheme.Dark テーマを定義します。
<style name="AppTheme" parent="Theme.AppCompat">
...
</style>
実際のニーズに応じて、さまざまなテーマスタイルを定義できます。
- ダーク テーマに対応した色のリソースをレイアウト ファイルで使用します。たとえば、XML レイアウト ファイルで次のように色のリソースを参照します。
<TextView
...
android:textColor="@color/text_color" />
res/values/colors.xmlにカラリソースを定義する:
<resources>
<color name="text_color">#000000</color>
</resources>
暗いテーマ用カラリソースは res/values-night/colors.xml で定義してください。
<resources>
<color name="text_color">#FFFFFF</color>
</resources>
- コードでシステムのダークモード設定を調べ、それに応じて処理を実行できます。たとえば、ダークモードかどうかを次のように判定できます。
int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {
// 暗色模式
} else {
// 亮色模式
}
判定結果に基づき、該当するUI調整やその他のロジック処理を実行する。
上記の手順で、Android のダークモードに対応できます。ただし、一部の Android バージョンではダークモードの対応が完全でない場合があるため、実装の際にはターゲットデバイスのシステムバージョンに応じて対応する必要があります。