安卓设置夜间模式和正常模式

修改theme:







添加attr.xml文件:

xml version="1.0" encoding="utf-8"?>

        name="clockBackground" format="color"/>
        name="clockTextColor" format="color"/>

如果要改变布局中字体或者背景色,需要让该布局的设置与当前下的主题样式一致,就是在布局中添加

 
  
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="?attr/clockBackground"
    >

 
  

后面就是在java代码的处理了:
 
  
MainActivity类中:
private boolean isNight=true;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
    initTheme();

    setContentView(R.layout.activity_main);
}
private void initTheme() {
    if (isNight) {
        setTheme(R.style.NightTheme);
    } else {
        setTheme(R.style.DayTheme);
    }

}

/**
 * 切换主题设置
 */
private void toggleThemeSetting() {
    if (!isNight) {
        setTheme(R.style.NightTheme);
        isNight=true;
    } else {
        setTheme(R.style.DayTheme);
        isNight=false;
    }
}
 
  
public void myClick(View v) {
        switch (v.getId()) {
            case R.id.bt_in:
                toggleThemeSetting();
                refreshUI();
                break;
            case R.id.bt_out:          
          toggleThemeSetting();
 	refreshUI();
break; } }
 
  
private void refreshUI() {
    TypedValue background = new TypedValue();//背景色
    TypedValue textColor = new TypedValue();//字体颜色
    Resources.Theme theme = getTheme();
    theme.resolveAttribute(R.attr.clockBackground, background, true);
    theme.resolveAttribute(R.attr.clockTextColor, textColor, true);
    ll.setBackgroundResource(background.resourceId);//将需要改变的样式进行修改
后面的就是改变样式了,根据自己喜好吧。。

}






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