换肤场景
保持App新鲜感
提高付费率
配合节日、活动进行营销
APK瘦身
写死的主题,切换很不友好
换肤的本质
动态修改 App 内的:文字颜色、图标、背景等元素。
换肤框架需要做到的是:不闪烁、无启动、架构独立、无继承、易于维护
换肤本质问题:
0、如何拦截系统实例化View的过程
1、如何确定哪些控件需要替换资源
2、如何加载外部的资源包
分析源码
Activity#setContentView()
-> PhoneWindow#setContentView() -> mLayoutInflater.inflate(layoutResId, mContentParent)
-> LayoutInflater#inflate() -> CreateViewFromTag() -> Factory2 -> 拦截系统创建View的流程(setFactory2())
AppCompatActivity -> AppCompatDelegateImplV9 -> AppCompatIIViewInflater