android 日间夜间模式一键换肤

现在好多的小说阅读器都有白天和夜间模式的切换,为了让用户有更好的体验,保护用户的眼睛。

Android官方在Support Library 23.2.0中已经加入了夜间主题。

接下来我们看怎么实现吧:

第一步添加依赖:

implementation'com.android.support:appcompat-v7:28.0.0'

第二步项目的主题继承夜间模式主题,在style中设置如下主题:

	<style name="AppTheme" parent="Theme.AppCompat.DayNight">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

第三步创建夜间模式资源文件

(1)新建values-night目录,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后缀为 -night 的文件夹是夜间模式资源存放位置

(2)在values-night目录下新建colors文件,如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来只需要在对应的colors文件下写不同的颜色值(夜间颜色值和白天颜色值)即可。至此关于实现夜间模式的配置已经基本完成。

调用切换模式

代码调用切换模式,设置AppCompatDelegate.MODE_NIGHT_YES或者AppCompatDelegate.MODE_NIGHT_NO来控制切换

使用如下:
在这里插入图片描述
其中SettingUtils工具类如下:

	public class SettingUtils {

private SharedPreferences mSp = PreferenceManager.getDefaultSharedPreferences(MyApplication.appContext);
private static final String NIGHT_MODE = "night_mode";

private SettingUtils() {
}

public static SettingUtils getInstance() {
    return SettingUtilsInstance.instance;
}

private static final class SettingUtilsInstance {
    private static final SettingUtils instance = new SettingUtils();
}

public boolean isNightMode() {
    return mSp.getBoolean(NIGHT_MODE, false);
}

public void saveNightMode(boolean mode) {
    mSp.edit().putBoolean(NIGHT_MODE, mode).commit();
}

}

MyApplication如下:

	 class MyApplication extends Application {

public static Context appContext;

@Override
public void onCreate() {
    super.onCreate();
    appContext = this.getApplicationContext();
    initAppTheme();
}

private void initAppTheme() {
    SettingUtils settingUtils = SettingUtils.getInstance();
    if (settingUtils.isNightMode()) {
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    } else {
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    }
}

}

这样建议的换肤就完成了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值