1、换肤流程
12、采集流程
23、Android资源查找流程
34、采集需要换肤的控件
换肤我们需要换所有可能需要换的页面控件,所以我们不可能在每个页面重新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当中。
网友评论