关于日间夜间模式切换的一种实用方法

来源:互联网 发布:激光洗眉机网络假货 编辑:程序博客网 时间:2024/05/21 06:22
日夜间模式切换:
/**
* 第一种设置夜间模式:通过重新给Activity设置主题,然后杀掉Activity,再创建Activity重新设置的之塔才 * 有效
* 搭建环境
* 1.在values中colors里设置颜色属性
* 2.在style.xml中定义两组主题,也就是日间主题和夜间主题
* 3.创建attrs.xml文件
* 使用代码
* 4.需要夜间模式的布局引用attr自定义属性
* 5.java代码
* a.判断储存类型
* b.点击事件,根据类型进行日夜间的切换
*/
colors里夜间模式的设置
<color name="nightColorPrimary">#3b3b3b</color>
<color name="nightColorPrimaryDark">#383838</color>
<color name="nightColorAccent">#a72b55</color>

styles日间模式要添加:
<item name="android:textColor">@android:color/black</item>
<item name="mainBackground">@android:color/white</item>
夜间模式要写:
<style name="NightAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/nightColorPrimary</item>
<item name="colorPrimaryDark">@color/nightColorPrimaryDark</item>
<item name="colorAccent">@color/nightColorAccent</item>
<item name="android:textColor">@android:color/white</item>
<item name="mainBackground">@color/nightColorPrimaryDark</item>
</style>

在values里创建attrs.xml文件,然后定义属性<attr name="mainBackground" format="color|reference"/>

在activity_main.xml引用夜间模式:
注意这里引用一下我们自定义的attr资源Android:background="?attr/mainBackground",可以使用到此属性的控件带有日夜间模式切换

紧接着就是java类了,先设置点击事件然后就要储存状态点击事件要做一个判断用三元运算符或者if,else都行至于方法我都给陈列下来了.
在这本人犯了个小小的错误,请大家原谅那就是我调用onSaveInstanceState的时候因为疏忽调用错了
一下图片就是我错的那个方法:

下面这个方法是正确的:
本人不时也会出错,所以有错请大家多多指导
原创粉丝点击