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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值