Android
DayNightテーマ(AppCompat v23.2 / API 14+)
サーチ…
アプリにDayNightテーマを追加する
DayNightテーマは、時刻とデバイスの最後の既知の場所に基づいて、カラースキームを切り替えるクールな機能をアプリに提供します。
styles.xml
以下を追加してください:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
昼夜のテーマ切り替え機能を追加するために拡張できるテーマは次のとおりです。
-
"Theme.AppCompat.DayNight"
-
"Theme.AppCompat.DayNight.NoActionBar"
-
"Theme.AppCompat.DayNight.DarkActionBar"
colorPrimary
、 colorPrimaryDark
、 colorAccent
他に、切り替えたい他の色を追加することもできます(例: textColorPrimary
やtextColorSecondary
。アプリのカスタム色をこのstyle
追加することもできます。
テーマを作業に切り替えるには、デフォルトのcolors.xml
をres/values
ディレクトリに、別のcolors.xml
をres/values-night
ディレクトリに定義し、昼/夜の色を適切に定義する必要があります。
テーマを切り替えるには、JavaコードからAppCompatDelegate.setDefaultNightMode(int)
メソッドを呼び出します。 (これにより、1つのアクティビティやフラグメントだけでなく、アプリケーション全体の配色が変更されます)。たとえば、次のようになります。
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
あなたはあなたの選択に従って次の3つのいずれかを渡すことができます:
-
AppCompatDelegate.MODE_NIGHT_NO
:これは、アプリケーションのデフォルトテーマを設定し、res/values
ディレクトリに定義されている色を使用しres/values
。このテーマには明るい色を使用することをお勧めします。 -
AppCompatDelegate.MODE_NIGHT_YES
:これはあなたのアプリの夜のテーマを設定し、res/values-night
ディレクトリに定義されている色をとります。このテーマには暗い色を使用することをお勧めします。 -
AppCompatDelegate.MODE_NIGHT_AUTO
:これは、時刻とvalues-night
ディレクトリのvalues
とvalues-night
定義した色に基づいて、アプリケーションの色を自動的に切り替えます。
getDefaultNightMode()
メソッドを使用して、現在の夜間モードのステータスを取得することもできます。例えば:
int modeType = AppCompatDelegate.getDefaultNightMode();
ただし、アプリを終了して再度開くと、テーマスイッチが維持されないことに注意してください。これを行うと、テーマは既定値のAppCompatDelegate.MODE_NIGHT_AUTO
に戻ります。テーマスイッチを持続させたい場合は、共有設定に値を保存し、アプリが破棄された後にアプリが開かれるたびに保存された値をロードするようにしてください。