Android 夜间模式的切换

    xiaoxiao2025-08-10  8

    现在大多数App都支持夜间模式的切换,其实不止切换夜间还能切换别颜色选择,其实切换模式并不难,下面我们看一下这个切换的demo。相信你看完这个例子一定可以轻松的

    掌握夜间模式可白天的切换了。

    下面我们看一下attrs.xml

    <?xml version="1.0" encoding="utf-8"?> <resources>     <attr name="mainbackground" format="reference|color"/> </resources>

    接下来在Styles里面增加两个style

    白天的风格样式

     <style name="normalTheme" parent="@android:style/Theme.Black.NoTitleBar">         <item name="mainbackground">@color/white</item>              </style> 夜间模式的     <style name="nightTheme" parent="@android:style/Theme.Black.NoTitleBar">         <item name="mainbackground">@color/night</item>     </style>

    我们继续看一下布局文件,注意的是,再布局文件中 android:background="?mainbackground"这行 其实换模式就是换一个整个布局的背景,所以大家一定要注意哦

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"

    <-- 注意这行代码很关键->

        android:background="?mainbackground"     tools:context=".MainActivity" >     <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="@string/hello_world" />     <Button         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="切换"         android:id="@+id/bt_switch"/> </LinearLayout>

    最后我们看一下MainActivity了做了那些事情

    package com.example.modechanged; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity {     //可以供选择模式的数组     private int []  thmes={R.style.normalTheme,R.style.nightTheme};     private SharedPreferences sp;     //该标记用来判断处于那种模式下,0代表白天,1代表夜间     private int code;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         //利用SharedPreferences保存模式标记         sp = getSharedPreferences("config",MODE_PRIVATE);          code = sp.getInt("code", 0);          //设置系统的主题,该方法一定要在setContentView之前调用,不然会报错         setTheme(thmes[code]);         setContentView(R.layout.activity_main);         Button bt=(Button) findViewById(R.id.bt_switch);         //点击切换主题         bt.setOnClickListener(new OnClickListener() {                          @Override             public void onClick(View v) {                 if(code==0){                     code++;                 }else if(code==1){                     code--;                 }                 Editor edit = sp.edit();                 edit.putInt("code", code);                 edit.commit();                 startActivity(new Intent(MainActivity.this,MainActivity.class));                 finish();             }         });     } } 就这么简单的完成了夜间模式的切换,所以模式切换没有那么难,大家看完以后是不是觉得超级简单,所以以后在遇到切换模式的需求,只需要几个步骤就可以轻松搞定了

    转载请注明原文地址: https://ju.6miu.com/read-1301601.html
    最新回复(0)