如何在android进行主题切换,关键点是如果不重启应用进行切换。
目前已知的Android处理主题的方式有三种:
- 一种是
style
,也是Android原生支持的模式; - 一种是apk方式,采用的是更换
context
获取资源, - 一种是zip方式,这种是开发起来最复杂,也是最原始的办法(一般不采用)。
之前的项目由于要做主题下载,所以只能采用apk方式,但是安装主题不太友好,不能静默安装,而且开发过程中也比较不方便。
后来采用style
方式,这种方式的缺点就是不能通过安装的方式来获得新的主题,只能通过更新版本来加入新的主题。好处就是Android原生支持,只需要 声明好,就可以直接在xml布局文件中使用,而且在androidStudio可以直接查看不同主题的显示效果。
由于种种优点,而且后续开发中进行交涉,接受了主题不能下载、而是更新应用的方式,项目正式使用上了这种主题方式。
遇到一个问题,就是每次切换主题都要重启所有的activity,以前使用apk方式的时候,也是如此,但是觉得这样不太友好,想进一步探索一下, 于是有了这个项目。
主题的切换主要是在onCreate
方法中通过setTheme
方法进行处理,但是如果不关闭activity,他就不会被销毁,不会重新走onCreate
方法,
这里采用的方式是onResume
中来触发主题的变更。由于onResume
在界面显示出来的时候就一定会走,在这里判断主题是否有变化,如果有, 则关闭当前并重新打开当前activity
,这样就完成了不重启整个应用,来达到主题切换的目的。
项目上传到了csdn code上,可以直接下载下来编译运行:https://code.youkuaiyun.com/qihigh/androidthemechange
git 地址 : git://code.youkuaiyun.com/qihigh/androidthemechange.git