美文网首页
Android动态换肤框架-换肤原理

Android动态换肤框架-换肤原理

作者: 码农的world | 来源:发表于2019-08-22 15:04 被阅读0次

注:下文源码有删减,截图只体现主流程

1、换肤原理

换肤就是替换资源(文字、颜色、图片等),而换肤基本有两种模式:一是内置换肤(在Apk包中存在多种资源(图片、颜色值)用于换肤时候切换。自由度低,apk文件大,一般用于没有其他需求的日间/夜间模式app);二是动态换肤(通过运行时动态加载皮肤包)。Android页面加载是因为setContentView(),所以第一步看看setContentView源码到底是怎么实现设置一个布局ID就能显示页面的(注:这里分析AppCompatActivity的setContentView方法,Activity的setContentView方法会不同)。

2、AppCompatActivity.java

1

3、AppCompatDelegateImplV9.java

2

注:使用LayoutInflater布局加载器将布局文件加载到contentParent中

4、LayoutInflater.java

3

注:获取到一个Resources对象,获取到xml解析器XmlResourceParser,解析布局文件

4

注释1:通过解析器获取一个节点名,比如我们布局文件的的一个TextView节点。

注释2:获取到根View

注释3:解析所有子view

5

注释1:通过mFactory2创建view;

注释2:创建系统自带的view;

注释3:创建自定义view(自定义view带了点)

6

注释1 获取到View的Class对象。

注释2 通过反射获取到View的构造方法。

注释3 通过构造函数创建View。

7

注意:setFactory2只能设置一次,否则会报异常。所以我们在自定义Factory2的时候,需要重新设置mFactorySet的值(设置mFactorySet为false)。因为mFactorySet是私有的,可以通过反射,然后修改该参数值。

相关文章

  • Android动态换肤框架-换肤原理

    注:下文源码有删减,截图只体现主流程 1、换肤原理 换肤就是替换资源(文字、颜色、图片等),而换肤基本有两种模式:...

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

    1、换肤流程 2、采集流程 3、Android资源查找流程 4、采集需要换肤的控件 换肤我们需要换所有可能需要换的...

  • Android-Skin-Loader源码解析

    源码 一:简介 Android-Skin-Loader是一个通过动态加载技术实现换肤的框架;解决换肤的两个核心问题...

  • Android-skin-loader 换肤总结

    前言 最近有个换肤的需求。基于github上的这个开源框架Android-Skin-Loader。这个框架的换肤机...

  • 再谈APP换肤实现

    导语:此前发表的关于APP换肤实现原理的文章——《APP动态换肤方案详解[https://www.jianshu....

  • Android换肤方案总结

    这篇总结也是拖了很久了,欠下的技术债必须得偿还啦~ Android换肤在使用场景上可以区分为静态换肤/动态换肤、应...

  • 动态换肤一(前期预备知识)

      动态换肤框架是仿照网易云音乐来换肤的,换肤的方式就是通过解压 apk 文件从中获取到皮肤包的资源,然后替换我们...

  • Android换肤方案

    没有任何侵入型的一行代码实现动态换肤的android换肤组件 欢迎star https://github.com/...

  • Android 动态换肤框架原理及DEMO

    先看效果图,再讲原理,最后是DEMO地址,我也是整理了别人的资料最终成文 前言 动态换肤的思路是需要先了解系统资源...

  • 手写动态换肤

    前言: 换肤,目前包括静态换肤和动态换肤静态换肤 这种换肤的方式,也就是我们所说的内置换肤,就是在APP内部放置多...

网友评论

      本文标题:Android动态换肤框架-换肤原理

      本文链接:https://www.haomeiwen.com/subject/ujynsctx.html