編輯:關於Android編程
上周有個朋友給建議說講講換膚吧,真巧這周公司的工作安排也有這個需求,換的地方之多之繁,讓人傷神死了。正所謂磨刀不誤砍柴工,先磨下刀,抽出一個工具類,寫了個關於換膚的簡單demo。
Android中換膚的實現有幾種方法,我使用的是讀取共享進程空間另一apk中的資源的方法。大致的原理如下,讓你的app和一個只有資源文件的app運行在同一進程中,這樣你的app就可以訪問另一app的資源了。原理很簡單,下面我們分步驟講解實現過程。
一、共享進程運行的空間
通過在兩個工程下的manifest根節點添加相同的android:sharedUserId屬性值,再者通過同一簽名文件打包,保證兩個app的簽名值一樣,這樣app就能運行於同一進程中了。這個是資源文件共享的前提。
二、抽象實現資源共享的工具類
根據ReflectionUtil的方法區我們可以看到,它的作用有三個:getSkinContext基於包名構建一個Context的實例;getIdentifier則是基於包名、資源文件夾名、資源名獲取對應的資源id;最後color、drawable等方法是根據包名、資源名,返回可直接使用的資源值。
三、使用實例
使用起來有點麻煩,當大量資源需要替換的話,編碼會非常麻煩。那看下面簡單的辦法
今天的文章比較短,大家如有好的想法或者其他換膚好的實現,請私信我,我會在下面幾天整理後繼續為大家介紹。
Android開發中,大部分控件都有visibility這個屬性,其屬性有3個分別為“visible ”、“invisible”、“gone”。主要用來設置控制控件的顯示
我是完全根據這裡仿制了一個作為備忘,可以點擊這裡查看原始版本代碼如下:1、res/values/attrs.xml 2、具體實現 publ
android中布局一般都有兩種方式,一種xml聲明,另外一種則是程序聲明: xml:
由於我的版本最低是2.2,所以只有把源碼下下來自己改,如果你覺得太多了可自己編譯成jar引用,本人不才,對java不是很熟悉,如果此版本中有錯誤還請大家指出來,此圖顯示的