最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)apk插件方式換膚的實例講解

 更新時間:2019年10月14日 14:15:48   作者:似魚  
在本篇文章里小編給大家整理的是關(guān)于Android實現(xiàn)apk插件方式換膚的實例代碼以及相關(guān)知識點,有需要的朋友們學(xué)習(xí)下。

1.什么時候換膚?

xml加載前換膚,如果xml加載后換膚,用戶將會看見換膚之前的色彩,用戶體驗不好。

2.皮膚是什么?

皮膚就是apk,是一個資源包,包含了顏色、圖片等。

3.什么樣的控件應(yīng)該進(jìn)行換膚?

包含背景圖片的控件,例如textView文字顏色。

4.皮膚與已安裝的資源如何匹配?

資源名字匹配

步驟:

1.xml加載前換膚,意味著需要將所需要換膚的控件收集起來。因此要監(jiān)聽xml加載的過程。

public class BaseActivity extends Activity {

 SkinFactory skinFactory;

 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState){
  super.onCreate(savedInstanceState);

  //監(jiān)聽xml生成的過程
  skinFactory = new SkinFactory();
  LayoutInflaterCompat.setFactory(getLayoutInflater(),skinFactory);
 }
}

2.需要換膚的控件收集到一個容器中并且不更改自己的邏輯直接換膚(例如:不用在每個需要換膚的空間里面加上: “ app:...... ”  自定義控件屬性)

思考:

(1)安裝的apk的id與皮膚id是否一樣?

(2)圖片的資源、顏色資源都對應(yīng)R自動生成的id

(3)皮膚包的資源id、R文件的資源id以及app里R文件的資源的id是否是一樣的?——是不一樣的

3.一個activity有多個控件(SkinView) 一個控件對應(yīng)多個換膚屬性(SkinItem)

SkinItem來封裝這些值:

attrName-屬性名(background)attrValue-屬性值id 十六進(jìn)制(@color/colorPrimaryDark)attrType--類型(color)Id(R文件的id)

class SkinItem{
  // attrName background
  String attrName;

  int refId;
  // 資源名字 @color/colorPrimaryDark
  String attrValue;
  // drawable color
  String attrType;

  public SkinItem(String attrName, int refId, String attrValue, String attrType) {
   this.attrName = attrName;
   this.refId = refId;
   this.attrValue = attrValue;
   this.attrType = attrType;
  }

  public String getAttrName() {
   return attrName;
  }

  public int getRefId() {
   return refId;
  }

  public String getAttrValue() {
   return attrValue;
  }

  public String getAttrType() {
   return attrType;
  }
 }

SkinView:

class SkinView{
  private View view;
  private List<SkinItem> list; //收集需要換膚的集合

  public SkinView(View view, List<SkinItem> list) {
   this.view = view;
   this.list = list;
  }
 }

4.收集完畢后,應(yīng)用換膚 (xml加載過程中換膚)

 

 

創(chuàng)建SkinManager去獲得皮膚apk,app通過SkinManager獲取皮膚apk

(1)加載皮膚包(loadSkin):通過反射獲得AsserManager的addAssetpath()方法,再通過這個方法獲得皮膚apk,從而實例化skinResource;再通過PackageManager.getPackageArchiveInfo(path,PackageManager.GET_ACTIVITIES).packageName;獲得皮膚包名

(2)獲取顏色(getColor):判斷skinResource是否為空;拿到res的名字,eg:通過“colorAccent”去尋找id

Android實現(xiàn)apk插件方式換膚

以上就是本次介紹的全部知識點內(nèi)容,感謝大家的學(xué)習(xí)和對腳本之家的支持。

相關(guān)文章

  • Android自定義實現(xiàn)羅盤視圖詳解

    Android自定義實現(xiàn)羅盤視圖詳解

    在開發(fā)Android應(yīng)用時,自定義視圖是一個非常重要的技能,本文將介紹如何創(chuàng)建一個自定義的羅盤視圖,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • android使用AES加密和解密文件實例代碼

    android使用AES加密和解密文件實例代碼

    本篇文章主要介紹了android使用AES加密和解密文件實例代碼,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • android開發(fā)實踐之ndk編譯命令簡單示例

    android開發(fā)實踐之ndk編譯命令簡單示例

    這篇文章主要給大家介紹了在android中ndk編譯命令使用的相關(guān)資料,文中詳細(xì)介紹了ndk-build命令行參數(shù),并通過簡單的示例代碼給大家介紹了如何編寫 .c 文件,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Android視頻點播的實現(xiàn)代碼(邊播邊緩存)

    Android視頻點播的實現(xiàn)代碼(邊播邊緩存)

    本篇文章主要結(jié)合了Android視頻點播的實現(xiàn)代碼(邊播邊緩存),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 教你一步步實現(xiàn)Android微信自動搶紅包

    教你一步步實現(xiàn)Android微信自動搶紅包

    自從微信添加搶紅包的功能,微信的電商之旅算是正式開始正式火爆起來。但是作為Android開發(fā)者來說,我們首先考慮的是如何實現(xiàn)Android微信自動搶紅包呢,下面我們來一起看看吧。
    2016-08-08
  • Kotlin線程的橋接與切換使用介紹

    Kotlin線程的橋接與切換使用介紹

    這篇文章主要介紹了Android開發(fā)中Kotlin線程的橋接與切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Android實現(xiàn)APP環(huán)境分離(利用Gradle)

    Android實現(xiàn)APP環(huán)境分離(利用Gradle)

    有過互聯(lián)網(wǎng)軟件開發(fā)經(jīng)驗的朋友一定對于測試環(huán)境和生產(chǎn)環(huán)境這兩個詞很是熟悉,在開發(fā)和測試階段,我們常常需要在同一個設(shè)備上同時安裝著兩套甚至多套環(huán)境的同一個應(yīng)用,便于觀察調(diào)試。所以這篇文章就來和大家分享Android利用Gradle實現(xiàn)APP環(huán)境分離的方法。
    2016-09-09
  • Android編程之文件讀寫操作與技巧總結(jié)【經(jīng)典收藏】

    Android編程之文件讀寫操作與技巧總結(jié)【經(jīng)典收藏】

    這篇文章主要介紹了Android編程之文件讀寫操作與技巧,結(jié)合實例形式總結(jié)分析了Android常見的文件與目錄的讀寫操作,及相關(guān)函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Android 使用Vitamio打造自己的萬能播放器(3)——本地播放(主界面、播放列表)

    Android 使用Vitamio打造自己的萬能播放器(3)——本地播放(主界面、播放列表)

    本文主要介紹 Android Vitamio本地播放功能,這里提供實例代碼和效果圖以便大家參考,有需要的小伙伴可以參考下
    2016-07-07
  • ListView的View回收引起的checkbox狀態(tài)改變監(jiān)聽等問題解決方案

    ListView的View回收引起的checkbox狀態(tài)改變監(jiān)聽等問題解決方案

    之前講到了自定義Adapter傳遞給ListView時,因為ListView的View回收,需要注意當(dāng)ListView列表項中包含有帶有狀態(tài)標(biāo)識控件的問題,感興趣的朋友可以祥看本文,或許會有意外的收獲哦
    2013-01-01

最新評論

固安县| 手机| 纳雍县| 吴川市| 大邑县| 新竹县| 武陟县| 冷水江市| 彭水| 东安县| 桂东县| 铜川市| 革吉县| 襄樊市| 宁国市| 隆化县| 疏附县| 兴城市| 陇西县| 闽侯县| 玛曲县| 柘荣县| 资兴市| 德化县| 大荔县| 吉水县| 喀喇| 革吉县| 成武县| 宿迁市| 建水县| 桐柏县| 喀喇沁旗| 芒康县| 石林| 应城市| 通州区| 禹州市| 蒙自县| 台北市| 隆安县|