关于项目的各种主题样式是很常见的一个功能,尤其是在一些音乐类型的app中更常见,之前在看Android10的时候有说过新特性中加入了 “暗黑模式”,正好有机会一起讲一下 (最近忙的很,也乱的很,只能半夜充充电了)
若以后有换皮肤的需求,待我用三方架子换个花老虎,睡了,睡了 ~
简单分析
如果让你实现一个日间模式、夜间模式,你会如何去实现?
嗯…我记得好多年前我是有以下想法的
- 有多少不同主题、模式,我就写多少不同的布局,
简而言之就是有多少种模式,我就写多少套布局
(好吧,可能很多年前 android 有这么操作的,但是如果现在还这么操作的话,效率就太低了,变成退化阶段了 -完全不推荐
) 监听主题变更的事件,在base类封装变装方法,然后子类各自进行设置
(嗯… 比一开始的想法好一点,但是几个界面还行,如果项目设计界面较多,且教复杂的话,你基本每个Activity或者View设置类都需要适配,那么也产生了大量的垃圾代码 -不推荐
)- 通过Theme动态适配不同模式下UI的显示状态
那么我们首先分析一下切换模式时候涉及到哪些方面?
- 整体的布局颜色肯定需要改变,不说变为黑色,至少是偏向暗色调的,所以意味着关于不同场景的切换,我们要准备俩套color
- 其次针对于部分需求是需要改变不同模