Android Night Mode 夜间模式实现

作者: 闫鹏飞写字的地方 | 来源:发表于2017-07-05 17:56 被阅读843次

夜间模式实现方法一 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);
}

相关文章

网友评论

    本文标题:Android Night Mode 夜间模式实现

    本文链接:https://www.haomeiwen.com/subject/vlwqhxtx.html