たかぎとねこの忘備録

プログラミングに関する忘備録を自分用に残しときます。マサカリ怖い。

Androidのスプラッシュスクリーンで簡単に背景色をダークモード対応させる方法

Android Studioで、resディレクトリを右クリックして、New -> Android Resource Directoryを選択する。

Directory Nameにvalues-nightを入力して、OKをクリックする。

values-nightディレクトリが表示されない場合は、Projectビューに切り替える。 values-nightディレクトリを見つけたら、右クリックして、New -> Values Resource Fileを選択する。

入力フィールドにcolorsを入力する。

作成されたvalues-night/colors.xmlcolor要素を追加する。nameにはactivity_backroundを指定する。値は#1f1f1f

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="activity_background">#1f1f1f</color>
</resources>

もともと存在していたvalues/colors.xmlにはライトモードに対応するactivity_backroundカラーを追加する。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="activity_background">#FFFFFF</color>
    ...
</resources>

AndroidManifest.xmlを開いて、application要素のandroid:themeに設定されているテーマを確認する。

<application
    ...
    android:theme="@style/Theme.TrainingNoteApplication"
>

該当のテーマが定義されているtheme.xmlを開いて、アプリケーション全体の背景色を変更するために次の要素を追加する。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="Theme.TrainingNoteApplication" parent="android:Theme.Material.Light.NoActionBar">
        <item name="android:windowBackground">@color/activity_background</item>
    </style>
</resources>

これでシステムのダークモードの設定に合わせて、スプラッシュスクリーン表示時の背景色が自動的に変更される。

参考

Splash screens  |  Android Developers

スタイルとテーマ  |  Android デベロッパー  |  Android Developers

DarkTheme対応のリソース設計 - DMM inside

Androidでダークテーマを試す. ダークテーマの設定方法について紹介します。 | by Keisuke Kawajiri | URL Memo | Medium