-
!!!查看全部
-
在skin包下面新建一個包config,然后新建一個類Const查看全部
-
然后讓我們實際上需要使用的Activity去繼承BaseSkinActivity,這樣的話我們將所需要寫的一些代碼寫在BaseSkinActivity的onCreatView方法里面即可。查看全部
-
!!!查看全部
-
!??!在該包下面新建一個類查看全部
-
新建一個包查看全部
-
***現在需要做的就是去獲得每個Activity它在加載contentview的時候,我們需要獲取到所有以skin_開頭的屬性所對應的view skinAttr:表示需要換膚的屬性 resname:表示資源的名字,我們需要通過這個名字去獲取插件包里面的資源 SkinAttrType:類型,根據不同的類型去執行不同的操作,如background、color、src等等 **我們需要一個方法把Activity轉換成List<SkinView>這么一個集合的對象,然后這里面所有的SkinView都是需要去換膚的。 也就是說我們接下來要涉及到三個類:SkinView、SkinAttr、SkinAttrType查看全部
-
***如何去捕獲需要換膚的那些控件。 1)首先明確你的換膚所涉及到的那些屬性都是些什么? 2)然后在我們可以在屬性值上面做一些文章,如何是skin開頭的屬性值的話,我們則認為其需要換膚。 3)對于我們換膚支持的那些屬性進行排查,其屬性值是否以skin_開頭,如果是以skin_開頭,則認為你這個view的 這個屬性是需要去換膚的,然后再將該屬性后面的值去替換成插件包里面的資源查看全部
-
打印出的log.可以看到通過上述方法能夠獲取到屬性的名字和屬性的值查看全部
-
!!!查看全部
-
!!!查看全部
-
!!!查看全部
-
??!捕獲到TextView,然后悄悄的讓它變成了Editext查看全部
-
可以看到TextView變成了Editext。可以進行輸入。 ***setFactory()方法是如何做到這一點的呢? 1)要清楚android當中UI界面、所以的布局文件到view的產生,是與LayoutInflater息息相關的。 2)那么LayoutInflater又是如何做到的呢?--打開它的源碼,查看它的一個方法:creatViewFromTag(),從中可以知道它是通過Tag的name 去創建一個view查看全部
-
觸發TestFactoryActivity查看全部
舉報
0/150
提交
取消