初步了解安卓的主题更换


换肤一般分为两种:插件换肤和主题换肤
  1. 插件换肤就是所谓的apk换肤,将需要更换的属性写好打成apk包放在asset下,然后在更换操作时,通过包名找到属性值进行更换。
  2. 主题换肤就是在工程中配置多套主题,每套主题对应不同的资源。

主题换肤

主题换肤一般用的是自定义属性而不是固定在xml中写死的属性如 android:background="#ffffff".首先我们可以现在res-values下新建一个custome_attrs.xml文件里面的内容为自定义属性如:


然后在res-values下的styles.xml中定义我们的主题如:



最后在布局中写入自定义的属性值如:


在activity中setContentView()前调用setTheme()就可以加载我们需要的主题。但是这个只是针对于还未打开的activity的主题的变化。对于那些应打开的activity由于ui已经绘制完成,主题并未发生变化,需要手动触发让系统刷新ui:

  1. 调用recreat()方法,利用onSaveInstanceState()保存好当前activity的状态。
  2. 手动加载当前主题的应用资源。从当前主题获取需要的资源。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容