android进行主题切换不重启整个应用(style方式)

如何在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.csdn.net/qihigh/androidthemechange


git 地址 : git://code.csdn.net/qihigh/androidthemechange.git

你可能感兴趣的:(android,android,主题)