安卓实现日夜模式
来源:互联网 发布:手机网络赛车游戏 编辑:程序博客网 时间:2024/04/19 14:44
安卓实现日夜模式只需三步:
一. 配置需要日夜模式的属性及定义日夜主题
attr.xml中配置如下:
<attr name="toolbarColor" format="color"/> <attr name="cardViewColor" format="color"/> <attr name="cardViewTextSelColor" format="color"/> <attr name="cardViewTextUnselColor" format="color"/> <attr name="backgroundColor" format="color"/> <attr name="navHeaderColor" format="color"/> <attr name="navMenuTextColor" format="color"/> <attr name="navMenuItemSelector" format="reference"/> <attr name="navIcon" format="reference"/> <attr name="navBackIcon" format="reference"/> <attr name="overFlowIcon" format="reference"/>
<style name="DayTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorDayPrimary</item> <item name="colorPrimaryDark">@color/colorDayPrimaryDark</item> <item name="colorAccent">@color/colorDayAccent</item> <item name="android:windowBackground">@color/colorDayWindowBackground</item> <item name="toolbarColor">@color/colorDayPrimary</item> <item name="cardViewColor">@color/colorDayCardView</item> <item name="cardViewTextUnselColor">@color/colorDayCardViewTextUnsel</item> <item name="cardViewTextSelColor">@color/colorDayCardViewTextSel</item> <item name="navHeaderColor">@color/colorDayNavHeader</item> <!--<item name="navMenuItemDaySelector">@drawable/drawer_menu_item_day_selector</item>--> <item name="navMenuTextColor">@color/colorDayNavMenuText</item> <item name="backgroundColor">@color/colorDayWindowBackground</item> <!--<item name="bannerTitleColor">@color/colorDayBannerTitle</item>--> </style> <style name="NightTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorNightPrimary</item> <item name="colorPrimaryDark">@color/colorNightPrimaryDark</item> <item name="colorAccent">@color/colorNightAccent</item> <item name="android:windowBackground">@color/colorNightWindowBackground</item> <item name="toolbarColor">@color/colorNightPrimary</item> <item name="cardViewColor">@color/colorNightCardView</item> <item name="cardViewTextUnselColor">@color/colorNightCardViewTextUnsel</item> <item name="cardViewTextSelColor">@color/colorNightCardViewTextSel</item> <item name="navHeaderColor">@color/colorNightNavHeader</item> <!--<item name="navMenuItemNightSelector">@drawable/drawer_menu_item_night_selector</item>--> <item name="navMenuTextColor">@color/colorNightNavMenuText</item> <item name="backgroundColor">@color/colorNightWindowBackground</item> <!--<item name="bannerTitleColor">@color/colorNightBannerTitle</item>--> </style>
二. 代码调用setTheme方法,将配置的主题属性放进去
String currenTheme = ThemeUtil.getInstance(this).getTheme();//获取sharePreference保存的主题switch (currenTheme) { case Constants.Theme.DAY_THEME:menuItem.setTitle(getResources().getString(R.string.action_switch_day));setTheme(R.style.NightTheme);ThemeUtil.getInstance(this).setTheme(Constants.Theme.NIGHT_THEME);changeTheme();break; case Constants.Theme.NIGHT_THEME:menuItem.setTitle(getResources().getString(R.string.action_switch_night));setTheme(R.style.DayTheme);ThemeUtil.getInstance(this).setTheme(Constants.Theme.DAY_THEME);changeTheme();break;}
三 . 使用TypeValue类,改变UI
private void changeTheme() {TypedValue typedValue1 = new TypedValue();TypedValue typedValue2 = new TypedValue();TypedValue typedValue3 = new TypedValue();Resources.Theme theme = getTheme();theme.resolveAttribute(R.attr.toolbarColor, typedValue1, true);theme.resolveAttribute(R.attr.cardViewColor, typedValue2, true);theme.resolveAttribute(R.attr.cardViewTextUnselColor, typedValue3, true);mToolBar.setBackgroundColor(ContextCompat.getColor(this, typedValue1.resourceId));if (mCommonFragment != null) { mCommonFragment.changeTheme(typedValue2,typedValue3);} }如此,就可以切换实现日夜模式了
1 0
- 安卓实现日夜模式
- 安卓日夜模式的切换
- 日夜模式
- 开关按钮实现日夜模式切换
- 日夜模式切换
- 日夜切换两种模式
- 简单的日夜模式切换
- 通过动态获取资源ID,执行接口回调-----来实现日夜模式切换
- SlidingMenu以及日夜模式切换配置
- 安卓夜间模式的实现
- 安卓设计模式的实现
- 安卓APP采用观察者模式实现检测版本更新
- 安卓APP采用观察者模式实现检测版本更新
- 简读RSS-MVVM模式的安卓客户端实现
- 关于安卓mvp模式的简易实现
- 安卓CVB模式
- 安卓mvc模式
- 安卓MVP模式
- C语言实验--字符变量的输入输出
- art pandoc使用回车换行而不是空格空格回车换行
- POJ 3374 Cake Share 可能会
- 一起来玩“云”
- ScriptEngineManager的妙用
- 安卓实现日夜模式
- 51 Nod 1521 一维战舰
- mac实用命令
- C++字节对齐与结构体大小计算
- 社交媒体(朋友圈、微博、QQ空间)开发一网打尽,PC端移动端都有!——源码来袭!
- for循环画三角形
- A. Snacktower
- 更新所有指定表时间字段及增加一天存储过程
- 深度优先搜索之全排列