如何在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. Dagger2 在 Android(安卓)项目的正确使用方式【完整篇】
  2. 简单聊一下Android音频通路的切换
  3. 用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)
  4. 4.1 Android如何访问资源
  5. Android禁止横屏竖屏切换
  6. 实现了在android实现左右滑动切换界面的效果
  7. Android自定义对话框(Custom Dialog)
  8. Android(安卓)如何保持横竖屏切换不变以及Fragment调用setRetain
  9. Android中 @和?区别以及?attr/**与@style/**等的区别

随机推荐

  1. Android使用AudioRecord遇到的问题与解决
  2. Android ANR问题分析思路
  3. Android(安卓)Message 及其使用
  4. android 电容屏(三):驱动调试之驱动程序分析
  5. ym—— Android(安卓)5.0学习之Activity
  6. 关于Android锁屏的问题
  7. android提高启动速度
  8. [Android Develop_003]-Android Database
  9. 腾讯面试官:了解Java Binder中的系统服务
  10. Android学习指南基础--第一讲:Android开发