編輯:關於Android編程
項目地址:ChangeMode
Implementation of night mode for Android.
用最簡單的方式實現夜間模式,支持ListView、RecyclerView。
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) {
//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);
//添加額外 view 至夜間管理
// ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary);
//ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent);
// ChangeModeController.getInstance().addTextColor(view,R.attr.colorAccent);
//2. 設置切換
//ChangeModeController.changeDay(this, R.style.DayTheme);
//ChangeModeController.changeNight(this, R.style.NightTheme);
}
@Override
protected void onDestroy() {
super.onDestroy();
//3. 在 onDestroy 調用
ChangeModeController.onDestory();
}
詳細操作描述
第一步:自定義屬性
第二步:配置夜間 style 文件
<code><code><code><code><resources> <!--{cke_protected}{C}%3C!%2D%2D%20Base%20application%20theme.%20%2D%2D%3E--><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar" type="text/css"><!--{cke_protected}{C}%3C!%2D%2D%20Customize%20your%20theme%20here.%20%2D%2D%3E--> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> <item name="windowNoTitle">true</item></style> <!--{cke_protected}{C}%3C!%2D%2D%E6%97%A5%E9%97%B4%E6%A8%A1%E5%BC%8F%20%2D%2D%3E--><style name="DayTheme" parent="AppTheme" type="text/css"><item name="zzbackground">@color/dayBackground</item> <item name="zzbackgroundDrawable">@drawable/ic_launcher</item> <item name="zztextColor">@color/dayTextColor</item> <item name="zzItemBackground">@color/dayItemBackground</item></style> <!--{cke_protected}{C}%3C!%2D%2D%E5%A4%9C%E9%97%B4%E6%A8%A1%E5%BC%8F%20%2D%2D%3E--><style name="NightTheme" parent="AppTheme" type="text/css"><item name="zzbackground">@color/nightBackground</item> <item name="zzbackgroundDrawable">@color/nightBackground</item> <item name="zztextColor">@color/nightTextColor</item> <item name="zzItemBackground">@color/nightItemBackground</item> <item name="colorPrimary">@color/colorPrimaryNight</item> <item name="colorPrimaryDark">@color/colorPrimaryDarkNight</item> <item name="colorAccent">@color/colorAccentNight</item></style><style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" type="text/css"><style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> </resources> </pre> </pre>
為相關屬性設置對應模式的屬性值:
#F2F4F7
#000
#fff
#37474F
#263238
#fff
第三步:在布局文件中配置使用對應屬性
注意textColorAttr、backgroundAttr、backgroundDrawableAttr三個屬性。如需當前頁面立即刷新,需填加相應屬性。
屬性
描述
textColorAttr
修改字體顏色時設置。如 R.attr.zztextColor 傳 zztextColor 即可。例:app:textColorAttr="zztextColor"
backgroundAttr
修改背景顏色/背景圖片時設置。同上。例: app:backgroundAttr="zzbackground"
backgroundDrawableAttr
修改背景顏色/背景圖片時設置。同上。例: app:backgroundDrawableAttr="zzbackground"
第四步:頁面調用 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));
service servicemanager /system/bin/servicemanager class core user system
一、概述近期注意到QQ新版使用了沉浸式狀態欄,ok,先聲明一下效果圖:恩,接下來正題。首先只有大於等於4.4版本支持這個半透明狀態欄的效果,但是4.4和5.0的顯示效果有
今天再來介紹該作者的另一個開源項目circular-progress-button,效果更酷炫。項目地址:https://github.com/dmytrodanylyk
手機能帶給你便捷、歡笑、感動,當然,也會帶給你小小的傷痛,比如,被偷、碎屏,或者掉進水裡——甭管這水是水池、下水道、馬桶還是火鍋,等