美文网首页
Android切换夜间模式

Android切换夜间模式

作者: 霁逸lei | 来源:发表于2020-07-17 13:44 被阅读0次

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"/>

相关文章

网友评论

      本文标题:Android切换夜间模式

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