Usage xml android:background= ?attr/zzbackground app:backgroundAttr= zzbackground //如果当前页面要立即刷新,这里传入属性名称 比如R.attr.zzbackground 传zzbackground即可 android:textColor= ?attr/zztextColor app:textColorAttr= zztextColor //
演示效果
Usage xml
android:background="?attr/zzbackground" app:backgroundAttr="zzbackground"//如果当前页面要立即刷新,这里传入属性名称 比如R.attr.zzbackground 传zzbackground即可 android:textColor="?attr/zztextColor" app:textColorAttr="zztextColor"//如需立即刷新页面效果 同上
java
@Override protected void onCreate(Bundle savedInstanceState) { // 在要立即切换效果的页面调用此方法 ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme); //在其他页面调用此方法 //ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //添加额外view至夜间管理 // ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary); //ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent); // ChangeModeController.getInstance().addTextColor(view,R.attr.colorAccent); // 设置切换 //ChangeModeController.changeDay(this, R.style.DayTheme); //ChangeModeController.changeNight(this, R.style.NightTheme); } @Override protected void onDestroy() { super.onDestroy(); // 在onDestroy调用 ChangeModeController.onDestory(); }
详细操作描述
第一步:自定义属性
<&#63;xml version="1.0" encoding="utf-8"&#63;>
第二步:配置夜间style文件
为相关属性设置对应模式的属性值:
<&#63;xml version="1.0" encoding="utf-8"&#63;>#F2F4F7 #000 #fff #37474F #263238 #fff
第三步:在布局文件中配置使用对应属性
<&#63;xml version="1.0" encoding="utf-8"&#63;>
注意textColorAttr、backgroundAttr、backgroundDrawableAttr三个属性。如需当前页面立即刷新,需填加相应属性。
第四步:页面调用java代码
@Override protected void onCreate(Bundle savedInstanceState) { //1. 在要立即切换效果的页面调用此方法 ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme); //在其他页面调用此方法 //ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //2.设置切换夜间活日间模式 //ChangeModeController.changeDay(this, R.style.DayTheme);//切换日间模式 //ChangeModeController.changeNight(this, R.style.NightTheme);//切换夜间模式 } @Override protected void onDestroy() { super.onDestroy(); //3. 在onDestroy调用 ChangeModeController.onDestory(); }
代码调用三步,即可开始夜间之旅。
如果页面有新创建的视图要加入夜间模式控制,安卓源码调用:
//添加额外view至夜间管理 // ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary); //ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent); // ChangeModeController.getInstance().addTextColor(view,R.attr.colorAccent);
如果在改变夜间模式时有其他非标准定义的属性时,可在ChangeModeController.changeDay或ChangeModeController.changeNight之后调用如下代码给相关属性赋值:
TypedValue attrTypedValue = ChangeModeController.getAttrTypedValue(this, R.attr.zztextColor);
toolbar.setTitleTextColor(getResources().getColor(attrTypedValue.resourceId));
源码下载地址:http://xiazai.jb51.net/201609/yuanma/AndroidChangeMode(jb51.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。