亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程實現換膚功能實例

2020-04-11 11:11:58
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現換膚功能的方法。分享給大家供大家參考,具體如下:

本系列專題培訓適用范圍:初級Android程序員,即有J2SE基礎和Android初級水平。J2SE基礎是指掌握JAVA語法,1.5、1.6新增的語法不完全掌握也沒關系。了解基本的面向對象思想、能編寫簡單的J2SE程序,掌握基本的調試方法,熟悉Swing更好。Android初級是指掌握Activity、Service、BroadcastReceiver、Intent、SQLite、UI組件的使用,能參照例子編寫簡單的Android應用程序。

先看一下實現的效果:

啟動時的皮膚

設置pak中的皮膚

設置zip包中的皮膚

本節課程的目的:學會換膚的方案及實現,掌握不同換膚方案的優缺點及適用場合。

希望各位同學做到:學習某一個技巧就掌握透徹,多練習。最好舉一反三、觸類旁通,掌握分析問題解決問題的思路和方法。

我講解的是原理以及實現的關鍵技術點,細節、優化及與課程主題不相關的或初級的內容可能不會講解。這是免費培訓,精力有限,暫時只能做到讓普通的變優秀,讓優秀的變卓越。你要是已經卓越了來教教我吧。暫時不做入門培訓。

國內有很多的軟件都支持皮膚定制,這也是與國外軟件重大不同之一,國外用戶注重社交、郵件等功能,國內用戶則重視音樂、小說、皮膚等功能,本節課程就來講解Android應用程序如何實現換膚功能。

軟件換膚從功能上可以劃分三種:

1) 軟件內置多個皮膚,不可由用戶增加或修改;

最低的自由度,軟件實現相對于后兩種最容易。

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

用戶可選擇下載自己喜歡的皮膚,有些玩家會破解皮膚的定制方法,自己做皮膚使用,或者傳到網上給大家用。

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

這種方式使用戶有參與感,自由度較高。用戶可根據自己的喜好定制軟件的皮膚。有些軟件官網提供皮膚定制的工具或者方法,我建議最好有可視化帶向導的工具。用戶只要自己找一些圖片、修改文字的字體替換就可以了。用戶可以上傳自制的皮膚,提供其他用戶下載,還可以賺得一些虛擬貨幣或者獎品什么的。這種一般都是打包為.zip格式的。擴展名可由各公司自定義,有制作工具的話直接導出來最方便。

首先我們要弄清楚換膚的定義,軟件皮膚包括圖標、字體、布局、交互風格等,換膚就是換掉皮膚包括的部分或所有資源。

前面提到的三種皮膚,從軟件實現上來看,它們的本質區別是皮膚是否內置到應用程序中。對于內置的實現比較簡單,只要在開發應用的過程中設計幾套皮膚供用戶選擇。這里用到的知識不超過Android基礎,不詳細講解。

本節課程重點講解如何實現皮膚與應用程序分離。

皮膚一般含有多個文件,例如圖片、配置等文件,分散的文件不利于傳輸和使用,最好打包。打包的格式一般選擇zip格式。這里分兩種情況,一種是apk,例如AdwLauncher,它的桌面皮膚格式是一個apk;另一種是自定義擴展名,例如墨跡天氣皮膚擴展名是mja,搜狗輸入法的皮膚擴展名是sga,它們的文件格式實際上都是zip。

下面我們分別講解。

一.apk格式

現在的問題變成了一個應用如何讀取另一個apk中的資源。

在android系統中,apk之間可以相互讀取數據的條件是:有同樣的簽名,并且AndroidManifest.xml文件中配置的android:sharedUserId屬性值相同,那么兩個apk運行在同一個進程中,可以互相訪問任意數據。

方法如下:

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

例如: android:sharedUserId="org.yuchen"

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

例如:應用程序的背景圖片路徑:/SkinDemo/res/drawable-hdpi/bg.png

那么皮膚apk中的背景圖片文件路徑也應該是:

CustomSkin/res/drawable-hdpi/bg.png

3)訪問資源的方法

復制代碼 代碼如下:
Context context = createPackageContext("com.yuchen.customskin", Context.CONTEXT_IGNORE_SECURITY);

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

例如:應用apk要獲得皮膚apk中的bg.png,

復制代碼 代碼如下:
Drawable drawable = context.getResources().getDrawable(R.drawable.bg);

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

二.自定義擴展名的zip格式的皮膚

技術點在于如何去讀取zip文件中的資源以及皮膚文件存放策略。

方案:如果軟件每次啟動都去讀取SD卡上的皮膚文件,速度會比較慢。較好的做法是提供一個皮膚設置的界面,用戶選擇了哪一個皮膚,就把那個皮膚文件解壓縮到”/data/data/[package name]/skin”路徑下,這樣不需要跨存儲器讀取,速度較快,而且不需要每次都去zip壓縮包中讀取,不依賴SD卡中的文件,即使皮膚壓縮包文件被刪除了也沒有關系。

實現方法:

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

2. 在軟件中提供皮膚設置界面。可以在菜單或者在設置中??蓞⒖寄E、搜狗輸入法、QQ等支持換膚的軟件。

3. 加載指定路徑下的皮膚文件,讀取其中的縮略圖,在皮膚設置界面中顯示,將用戶選中的皮膚文件解壓縮到”/data/data/[package name]/skin”路徑下。

4. 軟件中優先讀取”/data/data/[package name]/skin/”路徑下的資源。如果沒有則使用apk中的資源。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人一区二区三区电影| 俺也去精品视频在线观看| 这里只有精品丝袜| 欧美巨猛xxxx猛交黑人97人| 91精品国产高清久久久久久久久| 91高清在线免费观看| 欧美成人自拍视频| 国产999精品久久久| 国产在线观看不卡| 欧美黑人视频一区| 亚洲欧洲日产国码av系列天堂| 亚洲一区二区在线播放| 91精品久久久久久综合乱菊| 97人人模人人爽人人喊中文字| 欧美激情喷水视频| 欧美日韩在线第一页| 亚洲肉体裸体xxxx137| 久久久精品视频成人| 欧美日韩国产中文精品字幕自在自线| 日韩精品视频在线免费观看| 亚洲国产成人在线视频| 欧美丰满少妇xxxxx| 亚洲精品美女久久久| 国产精品v片在线观看不卡| 日韩av不卡电影| 欧美成人久久久| 最近更新的2019中文字幕| 亚洲情综合五月天| 亚洲国产精彩中文乱码av在线播放| 日韩免费在线播放| 欧美黑人xxxx| 日韩av在线一区| 欧美老妇交乱视频| 欧美激情a∨在线视频播放| 欧美一乱一性一交一视频| 日韩av在线播放资源| 中文一区二区视频| 亚洲大尺度美女在线| 欧美一乱一性一交一视频| 日韩一级裸体免费视频| 在线观看成人黄色| 亚洲一级一级97网| 色伦专区97中文字幕| 91伊人影院在线播放| 欧美xxxx做受欧美| 亚洲3p在线观看| 亚洲精品免费网站| 国产欧美精品一区二区三区介绍| 久久久爽爽爽美女图片| 久久精品国产99国产精品澳门| 亚洲欧美日韩精品久久亚洲区| 亚洲国产精品国自产拍av秋霞| 日韩中文字幕精品| 成人两性免费视频| 北条麻妃在线一区二区| 亚洲美女av在线播放| 国产福利视频一区二区| 亚洲成人av资源网| 欧美一区二粉嫩精品国产一线天| 91久久国产综合久久91精品网站| 日韩亚洲欧美中文在线| 奇米成人av国产一区二区三区| 久久久国产精品免费| 亚洲视频在线看| 亚洲人精选亚洲人成在线| 久久青草福利网站| 日韩影视在线观看| 国产香蕉一区二区三区在线视频| 精品欧美国产一区二区三区| 精品无码久久久久久国产| 91成人在线观看国产| 国产精品久久久久av| 日韩欧美在线视频日韩欧美在线视频| 2019日本中文字幕| 日韩美女写真福利在线观看| 最近2019中文免费高清视频观看www99| 亚洲va欧美va国产综合久久| 午夜精品美女自拍福到在线| 亚洲天堂免费在线| 亚洲va久久久噜噜噜久久天堂| 国内精品国产三级国产在线专| 久久久久久尹人网香蕉| 中文字幕日韩欧美精品在线观看| 亲子乱一区二区三区电影| 夜夜狂射影院欧美极品| 亚洲a在线播放| 久久精品小视频| 日韩欧美一区二区三区| 日韩有码在线播放| 亚洲午夜精品久久久久久久久久久久| 中文字幕久久精品| 国产精品入口夜色视频大尺度| 久久国产精品久久久久久久久久| 亚洲精品视频在线观看视频| 日韩av在线电影网| 精品亚洲精品福利线在观看| 亚洲欧美一区二区激情| 18一19gay欧美视频网站| 精品久久久国产精品999| 欧美大尺度电影在线观看| 日韩福利在线播放| 欧美自拍大量在线观看| 午夜精品久久久久久久99热| 亚洲成人三级在线| 亚洲天堂网在线观看| 亚洲精品按摩视频| 国产精品久久久久久久久粉嫩av| 精品视频久久久久久久| 欧美大片网站在线观看| 亚洲黄色成人网| 久久久久久久爱| 久久久久久久久久国产| 91免费人成网站在线观看18| 国产精品jvid在线观看蜜臀| 国产视频福利一区| 亚洲男人第一网站| 精品国产鲁一鲁一区二区张丽| 欧美日本高清一区| 国产精品wwwwww| 欧美www视频在线观看| 欧美激情亚洲视频| 欧美激情2020午夜免费观看| 国产精品成人久久久久| www.午夜精品| 国产一区二区三区三区在线观看| 一区二区在线视频播放| 精品欧美国产一区二区三区| 国产精品入口免费视| 69精品小视频| 97精品在线观看| 久久久精品视频成人| 精品视频在线观看日韩| 日韩在线视频二区| 亚洲国产欧美一区二区三区同亚洲| 国内精品400部情侣激情| 欧美大片大片在线播放| 亚洲一区二区中文| 欧美亚洲视频在线观看| 色偷偷综合社区| 色综合老司机第九色激情| 久操成人在线视频| 岛国视频午夜一区免费在线观看| 51精品国产黑色丝袜高跟鞋| 色综合91久久精品中文字幕| 国产精品免费网站| 亚洲国产精品嫩草影院久久| 久久国内精品一国内精品| 亚洲伊人久久综合| 欧美老少配视频| 在线丨暗呦小u女国产精品| 亚洲综合中文字幕在线观看| 国产最新精品视频| 亚洲已满18点击进入在线看片| 色综久久综合桃花网| 欧美精品免费在线观看| 国产精品久久久久久超碰| xvideos亚洲人网站| 亚洲女人初尝黑人巨大| 日韩高清av一区二区三区| 亚洲片av在线| 欧美成人精品不卡视频在线观看| 日韩av在线免费看| 欧美日韩国产影院| 欧美一级视频免费在线观看|