初步了解安卓的主题更换
2017-08-23 本文已影响57人
码农陈小二
换肤一般分为两种:插件换肤和主题换肤
- 插件换肤就是所谓的apk换肤,将需要更换的属性写好打成apk包放在asset下,然后在更换操作时,通过包名找到属性值进行更换。
- 主题换肤就是在工程中配置多套主题,每套主题对应不同的资源。
主题换肤
主题换肤一般用的是自定义属性而不是固定在xml中写死的属性如 android:background="#ffffff"
.首先我们可以现在res-values下新建一个custome_attrs.xml文件里面的内容为自定义属性如:
然后在res-values下的styles.xml中定义我们的主题如:
最后在布局中写入自定义的属性值如:
在activity中setContentView()前调用setTheme()就可以加载我们需要的主题。但是这个只是针对于还未打开的activity的主题的变化。对于那些应打开的activity由于ui已经绘制完成,主题并未发生变化,需要手动触发让系统刷新ui:
- 调用recreat()方法,利用onSaveInstanceState()保存好当前activity的状态。
- 手动加载当前主题的应用资源。从当前主题获取需要的资源。