Android 切换日夜间模式

来源:互联网 发布:软件项目开发阶段 编辑:程序博客网 时间:2024/05/01 09:32

在attrs.xml文件中配置属性

  <attr name="mainBackground" format="color"/>

在layout.xml文件中使用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="?mainBackground"    android:orientation="vertical" >    <Button        android:id="@+id/btnSet"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="夜间模式" /></LinearLayout>

在styles.xml文件中

 <style name="DayTheme" parent="@android:style/Theme">        <item name="mainBackground">#ffffff</item>    </style>    <!-- 夜间模式 -->    <style name="NightTheme" parent="@android:style/Theme">        <item name="mainBackground">#000000</item>    </style>

在MainActivity中

public class MainActivity extends Activity implements OnClickListener {    private Button btnSet;    private boolean isnightMode = false;// 设置一个标记,表示是否为夜间模式    private String text;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        showTheme();// 显示主题操作        setContentView(R.layout.activity_main);// 重新加在布局        initView();// 初始化控件        showText();        initSetOnClickListener();// 初始化点击事件    }    private void showTheme() {        isnightMode = SharedPreferencesUtils.getBoolean(this, "night_mode",                "night_mode");        if (!isnightMode) {            setTheme(R.style.DayTheme);        } else {            setTheme(R.style.NightTheme);        }    }    private void showText() {        if (!isnightMode) {            text = "夜间模式";        } else {            text = "日间模式";        }        btnSet.setText(text);    }    private void initView() {        btnSet = (Button) findViewById(R.id.btnSet);    }    private void initSetOnClickListener() {        btnSet.setOnClickListener(this);    }    @Override    public void onClick(View v) {        if (!isnightMode) {// 表示日间模式            setTheme(R.style.NightTheme);        } else {            // 切换为日渐模式            setTheme(R.style.DayTheme);        }        isnightMode = !isnightMode;// 改变标记        // 保存        SharedPreferencesUtils.saveBoolean(this, "night_mode", "night_mode",                isnightMode);        setContentView(R.layout.activity_main);// 重新加在布局        initView();        showText();        initSetOnClickListener();    }}

说明:SharedPreferencesUtils是自己写好的工具类

0 0