目录
介绍哈:
App 实现暗黑模式的切换是使用App 内的 Dark Mode开关,未跟随手机系统进行切换,这种方案可以对应用程序的外观进行更精细的控制,并独立于系统设置 。
先看效果,后面是实现逻辑
接下来看看咋实现哈,展示...
一、暗黑模式开关
二、切换白色/暗黑主题:
三、适配步骤
四、配置
五、代码中的颜色适配
六、适配
七、适配
介绍哈: App 实现暗黑模式的切换是使用App 内的 Dark Mode开关,未跟随手机系统进行切换,这种方案可以对应用程序的外观进行更精细的控制,并独立于系统设置 。先看效果,后面是实现逻辑
白色:
黑色:
文章插图
复杂的图片使用刚才定义的属性值,实现自动切换图片 。
比如这个图片:
五、代码中的颜色适配
// 代码中设置背景的颜色值binding.clBackground.setBackgroundColor(getColorFromAttr(activity, R.attr.AppMainBackground))// 代码中设置text颜色binding.tvAudio.setTextColor(getColorFromAttr(activity, R.attr.AppMenuText))// 代码中给简单的图片, 用tint改变图片颜色binding.ivAudio.imageTintList =ColorStateList.valueOf(getColorFromAttr(context, R.attr.AppMenuIconTint))// 代码中给复杂的图片, 设置不同的图片binding.ivTimeSwitch.setImageResource(getImageResourceFromAttr(context, R.attr.AppTimeStartDrawable))
代码中获取attr定义的颜色值(Utils)
// 获取attr定义的颜色值@ColorIntfun getColorFromAttr(context: Context?, @AttrRes attrColor: Int): Int {if (context == null) {return Color.TRANSPARENT}val typedValue = http://www.kingceram.com/post/TypedValue()context.theme.resolveAttribute(attrColor, typedValue, true)return typedValue.data}// 获取attr定义的图片@DrawableResfun getImageResourceFromAttr(context: Context?, @AttrRes attrImage: Int): Int {if (context == null) {return 0}val typedValue = TypedValue()val resolved = context.theme.resolveAttribute(attrImage, typedValue, true)return if (!resolved || typedValue.resourceId == 0) {0} else typedValue.resourceId}
六、适配
if (AppCenter.isDarkMode) {dialog.setStyle(STYLE_DARK_MODE);} else {dialog.setStyle(STYLE_LIGHT_MODE);}
【深色Andorid暗黑模式实现方案】七、适配
tv_share_btn.setButtonStyle(AppCenter.isDarkMode ? MAIN_BUTTON_NEW : MAIN_BUTTON);
- 暗黑破坏神不朽日服叫什么 暗黑破坏神不朽台服官网
- 暗黑破坏神不朽圣教军宝石推荐 暗黑破坏神不朽圣教军技能搭配
- 暗黑破坏神:不朽手游视频 暗黑破坏神不朽职业流派模拟器分享
- 暗黑2 白骨头盔 暗黑2白骨头盔哪里买
- 微信暗黑模式如何设置 微信暗黑模式怎么设置
- 微信怎么设置暗黑模式 微信怎么设置暗黑模式苹果手机
- 暗黑三追寻自由任务怎么做 暗黑3追寻自由任务怎么做
- 暗黑破坏神:不朽死灵 暗黑破坏神不朽死灵法师怎么玩
- 暗黑破坏神不朽猎魔人攻略 暗黑破坏神不朽猎魔人怎么玩
- 暗黑不朽赫拉迪姆神殿在哪 暗黑破坏神不朽在哪下载