美文网首页
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