Android动态换肤框架-实现换肤

1、换肤流程

1

2、采集流程


2

3、Android资源查找流程


3

4、采集需要换肤的控件

换肤我们需要换所有可能需要换的页面控件,所以我们不可能在每个页面重新findviewById,这时就需要一个方案可以在每个页面创建的时候自动获取所有换肤的控件并实现换肤,这里我们使用注册Activity生命周期回调实现这个需求。


4

通过昨天的换肤原理那篇文章我们可以知道,如果已经设置了Factory,那么就会通过工厂来创建view,所以通过上图4,我们自己实现一个工厂类SkinLayoutFactory,我们自己创建view,这样我们就能得到view中的对象和需要换肤的控件,代码如下图。


5
6

通过上图5、6可以看到,我们是通过自己实现工厂类创建view,创建view的代码其实都是和源码一样的,可以看看上一篇换肤的原理。创建view以后,我们就能筛选出我们所需要换肤的控件,筛选代码-“skinAttribute.load(view,attrs);”如下图


7


8


9

以上就是完整的采集换肤控件的流程。通过图7、8、9我们可以看到需要换肤的View和对应的属性都保存在了SkinAttribute的skinViews当中。

git地址:https://github.com/huoyingfang/AndroidSkin

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.背景 公司业务上需要用到换肤.为了不重复造轮子,并且快速实现需求,并且求稳,,于是到Github上找了一个st...
    潇风寒月阅读 4,022评论 4 23
  • 前言: 本文主要讲述如何在项目中,在不重启应用的情况下,实现动态换肤的效果。换肤这块做的比较好的,有网易云音乐,q...
    Yagami3zZ阅读 13,725评论 5 51
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,142评论 1 32
  • 话说什么是动态换肤?这里举个例子:在APP中可以下载某一个皮肤包,然后应用起来整个APP的界面就发生了改变,诸如某...
    carlwu_186阅读 3,683评论 4 13
  • 每时一觉: 什么时候你能开始用心创造? 是你 心安 的时候! 什么时候你能毫无保留的大力创造? 是你 心定 的时候...
    闫晓丽314阅读 283评论 0 0