说起Android的动态换肤方案,可谓是人云亦云,各有各的方法,鱼龙混杂,我实在是参考不来一个好的换肤方案。

于是准备自己搞一个。


在这里我是拒绝写多个style实现换肤的


那么只能用Java代码来实现(话说这样是不是有点难度啊,答案是否定的,难倒是不难,就是稍微麻烦点)


首先简述一下整体的思路:


1.在Activity中的onCreate中,检查当前设置的theme样式(随意用什么方式实现存储,主要是拿到当前设定的样式)

2.开始setContentView,这里就要进行判断和语句分支了:if(mode1){...}else if(mode2){...},开始使用代码的方式为布局设定颜色等

3.新增 reloadView 接口,这样做的目的是在用户切换主题后重新设定布局颜色等,实现动态切换主题。


这样做的确是个不错的方法(个人感觉),但是如果Activity中有一个listView,也可能有很多层嵌套的chilView,这样的话就有一些麻烦,每一个view都需要准备两种主题。。。。反正就是这样,动态换肤本来就是这么繁琐



Activity的问题解决了,可是Activity里还嵌套了Fragment怎么破?

别急,先看思路:


还是一样的套路,Fragment中新增ReloadView方法,目的也是起到一个刷新的作用,当宿主Activity被执行ReloadView方法时,也应当通知当前活动在Fragment栈中的对象,并调用Fragment中的ReloadView方法,执行动态换肤。。。




以上思路可以快速解决动态换肤,谢谢观看~



更多相关文章

  1. Android(安卓)属性动画代码分析(基于ObjectAnimator)
  2. 腾讯Android社招面试源码相关11题+原理详解
  3. Android之Handler总结与Timer和TimerTask详解
  4. 7种例子讲解Android(安卓)Dialog!
  5. Android预置Apk方法
  6. Android(安卓)实现高斯模糊效果及低版本兼容
  7. [Android]如何做一个崩溃率少于千分之三噶应用app(10)-ModuleBus交
  8. Android(安卓)Studio Jni开发(二)实现Native调用java方法和Native
  9. android SQLite数据库1

随机推荐

  1. Android buttom textview 颜色平滑过渡的
  2. vue+cordova移动端Android开发环境配置
  3. Android OpenGL ES 分析与实践
  4. 在Eclips中更改Android工程中包的名字
  5. Android 下载apk提示更新以及解决Android
  6. Android OpenGLES 实现结构
  7. Spring for android实现客户端与服务器的
  8. Android(安卓)Studio创建项目Error:Serve
  9. android中的主题(theme)的定义
  10. Android 常用代码整理:Android 常用弹窗整