夜间模式实现方法一 UiModeManager.setNightMode
先来看效果:
2514C8C34D9054FA6441CF3F0383A5CF.jpg 3F283595A86D953501B0D59F3E5D6255.jpg建立若干资源文件夹,
drawable-night-hdpi,drawable-night-xhdpi,drawable-night-xxhdpi
,和values-night
。在drawable
文件夹中放入与不带night
的文件夹对应的图标,保存图标名一致。在values-night
中建立新的color.xml
,存放夜间模式所需的颜色设置。使用这种方式的好处就是通过建立带-night
的资源文件夹,就可以通过改变设置,使其读取指定目录下的资源,减少很多原有代码的更改。
例如,(颜色值仅供参考)
colors.xml in values
<resources>
<color name="night_mode_color">#DD7321</color>
<color name="night_mode_dark_color">#DD4814</color>
<color name="background_color">#FFFFFF</color>
</resources>
colors.xml in values-night
<resources>
<color name="night_mode_color">#7D4112</color>
<color name="night_mode_dark_color">#7D4112</color>
<color name="background_color">#1F1F1F</color>
</resources>
styles.xml in values
<style name="Theme.Test" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/night_mode_color </item>
<item name="colorPrimaryDark">@color/night_mode_dark_color </item>
<item name="colorAccent">@color/night_mode_color </item>
<item name="android:windowBackground">@color/background_color</item>
</style>
完成这些配置后,在需要切换的地方,加上如下代码
UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
if (isNightMode) {
uiManager.enableCarMode(0);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
} else {
uiManager.disableCarMode(0);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
}
网友评论