1.设置主题DayNight
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
</style>
2.保证Activity继承AppCompatActivity
3.添加夜间模式对应的资源文件
此处最好把对应的color、drawable都设置相应的夜间资源,遇到过在4.4上使用drawable中的shape背景颜色未能正常显示夜间颜色资源,加上drawable-night恢复正常
image.png
4.如果night对应的资源不存在,则会引用默认资源
5.SharedPreferences保存历史模式,在Activity setContentView之前设置模式
if (style){
AppCompatDelegate.setDefaultNightMode(style ? AppCompatDelegate.MODE_NIGHT_YES:AppCompatDelegate.MODE_NIGHT_NO);
}
6.点击切换夜间模式(使用关闭当前页重新开启首页)
private void setNightMode(boolean nightOn){
Prefs.with(MainActivity.this).writeBoolean(CommonUtil.THEME_STYLE,nightOn);
AppCompatDelegate.setDefaultNightMode(nightOn ? AppCompatDelegate.MODE_NIGHT_YES:AppCompatDelegate.MODE_NIGHT_NO);
finish();
startActivity(new Intent(MainActivity.this, MainActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
//设置透明度淡入淡出
fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="1000"
android:interpolator="@android:anim/decelerate_interpolator"/>
fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="1000"
android:interpolator="@android:anim/decelerate_interpolator"/>
网友评论