Android 切换日夜间模式

在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是自己写好的工具类

你可能感兴趣的:(android,夜间模式)