好久没写博客了,还是不能停下,不然不常用的容易忘记,所以准备继续记录自己所学。
现在许多应用都支持更换主题,比如扣扣,网易云音乐。我所知道的流行换肤框架有Android-Skin-Loader和Android-skin-support还有Colorful。大家有兴趣在项目中添加换肤功能的可以去研究学习下这些框架。
不过从酷市场的开源相关中并未看到换肤相关的框架,当然了,严格上这个不能称之为换肤,酷市场里叫做主题风格。
其实我是在很久之前看过一篇文章,是讲夜间模式的简单实现。当时只是随意看了下源码,知道是Android支持包引入的新能力就放下了,现在做下记录一面忘记。
先看一下酷市场的界面:
AppCompatDelegate是一个委托代表,它将AppCompatActivity的特性提供给Activity。
我们来看AppCompatActivity源码,可以看到在oncreate时进行创建实例:
然后我们就可以通过 AppCompatDelegate来切换夜间模式和toolbar颜色。
先看我们的界面以及效果吧:
首先是 夜间模式的切换:
新建values-night:
我们这里只以主题颜色为例,新建colors资源文件:
在代码中实现模式切换:
而单纯的toolbar颜色的更改比较简单,直接给toolbar设置背景颜色即可,在实际效果中酷市场有过度效果,实现起来也很简加个动画即可:
ObjectAnimator objectAnimator = ObjectAnimator.ofInt(toolbar, "backgroundColor", SharePrefs.getInt(MainActivity.this, "toolBarColor", bean.getColorRes()), bean.getColorRes());
objectAnimator.setDuration(500);
objectAnimator.setEvaluator(new ArgbEvaluator());objectAnimator.start();