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