Android      App主题切换Demo   
文章目录  [隐藏]

开源地址:http://git.oschina.net/ivigiles/ThemeSwitch
系统版本:target=android-17

1.自定义属性准备

在 /res/values/ 中创建一个attrs.xml文件,类型为resources。内容如下:

2.自定义Style准备

在 /res/values/style.xml 里新建2个style节点,用于白天和夜晚主题匹配。代码如下:

3.定义主题管理工具类及主题切换接口

关键类,其中有一个标识属性,保存当前主题标识。还有个容器属性,用来存储全部需要动态设置主题的接口。
主题切换监听接口,可以是内部public类,也可以是独立的类,随意。此接口定义一个回调方法,用来操作Aty中的控件。

4.使用自定义Style

5.Activity实现主题切换监听

每个需要主题切换功能的Aty都实现Theme切换监听接口,实现其切换功能。在这个功能里首先set新的主题,然后加载新的属性,最后更新控件。

6.动态切换

多数App都有自动切换主题的功能。在早晨及傍晚,会根据时间自动切换白天模式和夜晚模式,其为定时器监听系统模式切换或由时钟判断时间,然后以广播的形式通知Activity进行切换。

7.注意事项

一般的横竖屏切换事件处理时,一直兼容到3.2,通常在AM.xml的Activity节点中设置属性:

这样当前显示的Activity就不会重xin执行onCreate进行重建。但在NEXUS5+6.0中测试,仍然重走onCreate,致使切换屏幕方向之前的主题失效。
因此,针对本例续上述代码,提供解决方法,在要执行主题切换的Aty的onCreate中,对setTheme语句进行增强:

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设