Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現換膚的兩種思路分析

Android實現換膚的兩種思路分析

編輯:關於Android編程

本文分析了Android實現換膚的兩種思路。分享給大家供大家參考,具體如下:

這裡來了解換膚實現及不同方案的差異和使用場合。

一、從功能上劃分

1) 軟件內置多個皮膚,用戶不能修改;

2) 官方提供皮膚下載,用戶使用下載的皮膚;

3) 官方提供皮膚制作工具或方法,用戶自制皮膚。

二、皮膚定義

軟件皮膚包括圖標、字體、布局、交互風格等,換膚就是換掉皮膚包括的部分或所有資源。

三、皮膚與APP分離

1)打包皮膚文件

默認格式是apk。例如Launcher,它的桌面皮膚格式是一個apk;

自定義的格式為zip。例如墨跡天氣皮膚擴展名是mja,搜狗輸入法的皮膚擴展名是sga,它們的文件格式實際上都是zip。

四、資源訪問

1)apk格式

apk之間讀取數據的條件是:有相同簽名並且AndroidManifest.xml中配置android:sharedUserId有相同的屬性值,這樣兩個apk運行在同一個進程中,就能互相訪問數據了。

方法如下:

a) 應用程序和皮膚程序的AndroidManifest.xml中配置

例如: 復制代碼 代碼如下:android:sharedUserId="com.zj"

b) 文件與應用apk中對同一功能的皮膚文件名要一致

例如:應用程序的背景圖片路徑:\Skin\res\drawable-hdpi\XX.png

那麼皮膚apk中的背景圖片文件路徑也應該是:Skin\res\drawable-hdpi\XX.png

c)訪問資源的方法
復制代碼 代碼如下:Context context = createPackageContext("com.zj.skin", Context.CONTEXT_IGNORE_SECURITY);

獲取到com.zj.skin對應的Context,通過返回的context對象就可以訪問到com.zj.skin中的任何資源。

例如:應用apk要獲得皮膚apk中的bg.png,
復制代碼 代碼如下:Drawable drawable = context.getResources().getDrawable(R.drawable.bg);

這樣就得到了圖片的引用,其他xml資源文件的獲取方式也是類似的。

2)自定義擴展名的zip格式的皮膚

重點:讀取zip文件中的資源以及皮膚文件存放策略。

方案:如果每次啟動都讀取SD卡上的皮膚文件,就會影響APP執行速度。最好是提供設置皮膚的界面,把用戶選擇的皮膚文件解壓縮到皮膚路徑下,這樣不需要跨存儲器讀取,速度較快,而且不需要每次都去zip壓縮包中讀取,不依賴SD卡中的文件,就算皮膚壓縮包被刪除了也不會影響。

實現方法:

a) 在軟件的幫助或者官網的幫助中提示用戶將皮膚文件拷貝到SD卡指定路徑下。

b) 在軟件中提供皮膚設置界面。可以在菜單或者在設置中。可參考墨跡、搜狗輸入法、QQ等支持換膚的軟件。

c) 加載指定路徑下的皮膚文件,讀取其中的縮略圖,在皮膚設置界面中顯示,將用戶選中的皮膚文件解壓縮到皮膚路徑下。

d) APP優先讀取皮膚路徑下的資源。如果沒有則使用apk中的資源。

希望本文所述對大家Android程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved