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に戻ります。テーマスイッチを持続させたい場合は、共有設定に値を保存し、アプリが破棄された後にアプリが開かれるたびに保存された値をロードするようにしてください。