インターフェイス データのソースは、Hongyang Dashen の「Playing Android」Web サイトです: https://wanandroid.com/
白黒グレーの通常モードと白黒グレーのナイトモードのスクリーンショット
ナイトモードとノーマルモードのスクリーンショット
白黒グレーと原色モード設定
/**
* 设置灰白色
*/
protected void setGrayScreen() {
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}
/**
* 设置原色,灰白色、原色都不设置默认为原色
*/
protected void setOriginalScreen() {
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(1);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
getWindow().getDecorView().setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}
使用
上記のメソッドをまず BaseActivity に記述し、他のアクティビティは BaseActivity クラスを継承します。次に、独自のビジネス ロジックに従ってグローバル メソッドを呼び出します。
ナイトモードとデイモードの設定
ナイト モードを設定するには、最初に、values フォルダーの下にある styles.xml ファイルの親属性を次のように設定する必要があります: Theme.AppCompat.DayNight.NoActionBar
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
次に、values フォルダーの下にある colors.xml ファイルで、デイ モードに必要な色の値を構成する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="colorBg">#F4F5F7</color>
<color name="white">#ffffff</color>
<color name="black">#000000</color>
</resources>
values-night フォルダーの下にある colors.xml でナイト モードに対応する色の値を構成します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#303030</color>
<color name="colorPrimaryDark">#232323</color>
<color name="colorAccent">#008577</color>
<color name="white">#232323</color>
<color name="black">#ffffff</color>
</resources>
最後に、独自のビジネス ロジックに従って BaseActivity の public メソッドを呼び出すだけです。
/**
* 设置夜间模式
*/
protected void setModeNight() {
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
/**
* 设置白天模式,白天、夜间都不设置跟随系统
*/
protected void setModeLight() {
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}
ナイトモードとデイモードの判定
int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (mode == Configuration.UI_MODE_NIGHT_YES) {//夜间模式
} else if (mode == Configuration.UI_MODE_NIGHT_NO) {//非夜间模式
}
//根据判断重新设置模式后刷新使设置生效
recreate();