美文网首页
夜间模式

夜间模式

作者: 魔女小姐的猫 | 来源:发表于2020-08-23 13:15 被阅读0次

重启activity实现夜间模式

  1. 修改项目中styles文件
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
  1. 使用SharedPreference当前存储主题状态
    SharedPreferencesUtil
public class SharedPreferencesUtil {


    private static SharedPreferences.Editor editor;

//添加ui模式


    public static void addModeUI(Context context, boolean bool) {

        editor = context.getSharedPreferences("mode", Context.MODE_PRIVATE).edit();

        editor.putBoolean("mode_ui", bool);

        editor.commit();

    }


    /**
     *     * 是否是夜间模式
     * <p>
     *     * @param context
     * <p>
     *     * @return
     * <p>
     *    
     */
    public static int getNight(Context context) {

        boolean bool = context.getSharedPreferences("mode", Context.MODE_PRIVATE).getBoolean("mode_ui", false);

        return bool ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO;

    }

}
   

UIModeUtil

 public class UIModeUtil {

    /**
     *     * 夜间模式切换
     * <p>
     *    
     */

    public static void changeModeUI(AppCompatActivity activity) {

        int currentNightMode = activity.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;

        if (currentNightMode == Configuration.UI_MODE_NIGHT_NO) {

            activity.getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);

            SharedPreferencesUtil.addModeUI(activity.getBaseContext(), true);

        } else {

            activity.getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);

            SharedPreferencesUtil.addModeUI(activity.getBaseContext(), false);

        }

    }

    /**
     *     * 显示当前的模式
     * <p>
     *     * @param activity
     * <p>
     *     * @param mode
     * <p>
     *    
     */

    public static void showModeUI(AppCompatActivity activity, int mode) {
        activity.getDelegate().setLocalNightMode(mode);
    }
}
  1. 使用步骤(该类必须继承AppCompatActivity)
  • 设置布局
<CheckBox
        android:id="@+id/head_cb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="50dp"
        android:text="夜间模式"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  • 找控件
 View headerView = main_nv.getHeaderView(0);//侧滑菜单的头布局
head_cb = headerView.findViewById(R.id.head_cb);
  • 每次执行该方法检查是否设置夜间模式
//每次执行该方法检查是否设置夜间模式
   @Override
   protected void onStart() {
       super.onStart();
       int mode = SharedPreferencesUtil.getNight(this);
       UIModeUtil.showModeUI(this, mode);
   }
  • 获取到夜间(白天)模式,设置监听
     //获取到夜间(白天)模式
     int mode = SharedPreferencesUtil.getNight(this);
       if (mode == AppCompatDelegate.MODE_NIGHT_YES) {
           head_cb.setChecked(true);
       } else {
           head_cb.setChecked(false);
       }

     //设置监听
       head_cb.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               UIModeUtil.changeModeUI(activity);
               recreate();
           }
       });

来自于

相关文章

  • 想用AppCompat的夜间模式切换功能又不想导整个库?

    目录 背景 Android中的夜间模式 AppCompat实现夜间模式 AppCompat夜间模式切换功能的分析 ...

  • 盘点win10系统里的六个神奇模式,总有一个你不知道!

    夜间模式 Win10系统加入了夜间模式,夜间模式自带护眼功能,让夜晚操作电脑的用户可以保护视力。 简单说夜间模式就...

  • Android实现夜间模式的方法(二)

    该文章接上篇 Android实现夜间模式的方法(一) 三.夜间模式的实现方案——单纯夜间模式 1.通过切换主题...

  • 微博iOS的护眼模式

    夜间模式的探讨 与其他App切换夜间模式不同: 微博采取了护眼模式: 两种方案各有利弊: 夜间模式优点:可以对每一...

  • 夜间模式

    又是一个夜晚 夜晚总会让人产生思考 这个夏天 这个暑假 找了一份暑假工兼职 算是体验生活 “享受”一下赚钱的不易 ...

  • 夜间模式

    思路: 一: 1.准备两套资源,分别对应日间模式和夜间模式。 2.在系统全局保存一个变量(BOOL isNight...

  • 夜间模式

    标签(空格分隔): Android 1、通过切换theme来实现夜间模式。2、通过资源id映射的方式来实现夜间模式...

  • 夜间模式

    夜间模式

  • 夜间模式

    夜深了,睡不着,拿着手机,息屏,开启,息屏,亮起……这样,1点,2点……这样,脑子里头绪万千

  • 夜间模式

    1. array.xml 中设置变量 2. style.xml 中创建白天和夜间模式的主题,分别设置变量的值 3....

网友评论

      本文标题:夜间模式

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