1、換膚流程

1
2、采集流程

2
3、Android資源查找流程

3
4、采集需要換膚的控件
換膚我們需要換所有可能需要換的頁(yè)面控件,所以我們不可能在每個(gè)頁(yè)面重新findviewById,這時(shí)就需要一個(gè)方案可以在每個(gè)頁(yè)面創(chuàng)建的時(shí)候自動(dòng)獲取所有換膚的控件并實(shí)現(xiàn)換膚,這里我們使用注冊(cè)Activity生命周期回調(diào)實(shí)現(xiàn)這個(gè)需求。

4
通過(guò)昨天的換膚原理那篇文章我們可以知道,如果已經(jīng)設(shè)置了Factory,那么就會(huì)通過(guò)工廠來(lái)創(chuàng)建view,所以通過(guò)上圖4,我們自己實(shí)現(xiàn)一個(gè)工廠類SkinLayoutFactory,我們自己創(chuàng)建view,這樣我們就能得到view中的對(duì)象和需要換膚的控件,代碼如下圖。

5

6
通過(guò)上圖5、6可以看到,我們是通過(guò)自己實(shí)現(xiàn)工廠類創(chuàng)建view,創(chuàng)建view的代碼其實(shí)都是和源碼一樣的,可以看看上一篇換膚的原理。創(chuàng)建view以后,我們就能篩選出我們所需要換膚的控件,篩選代碼-“skinAttribute.load(view,attrs);”如下圖

7

8

9
以上就是完整的采集換膚控件的流程。通過(guò)圖7、8、9我們可以看到需要換膚的View和對(duì)應(yīng)的屬性都保存在了SkinAttribute的skinViews當(dāng)中。