自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android實(shí)現(xiàn)更換皮膚功能

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

先看一下實(shí)現(xiàn)的效果:

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

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

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

最低的自由度,軟件實(shí)現(xiàn)相對于后兩種最容易。

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

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

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

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

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

前面提到的三種皮膚,從軟件實(shí)現(xiàn)上來看,它們的本質(zhì)區(qū)別是皮膚是否內(nèi)置到應(yīng)用程序中。對于內(nèi)置的實(shí)現(xiàn)比較簡單,只要在開發(fā)應(yīng)用的過程中設(shè)計(jì)幾套皮膚供用戶選擇。這里用到的知識(shí)不超過Android基礎(chǔ),不詳細(xì)講解。

本文重點(diǎn)講解如何實(shí)現(xiàn)皮膚與應(yīng)用程序分離。

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

下面我們分別講解。

一.a(chǎn)pk格式

現(xiàn)在的問題變成了一個(gè)應(yīng)用如何讀取另一個(gè)apk中的資源。

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

方法如下:

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

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

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

例如:應(yīng)用程序的背景圖片路徑:\SkinDemo\res\drawable-hdpi\bg.png

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

CustomSkin\res\drawable-hdpi\bg.png

3)訪問資源的方法

Context context = createPackageContext("com.yuchen.customskin", Context.CONTEXT_IGNORE_SECURITY);

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

例如:應(yīng)用apk要獲得皮膚apk中的bg.png,

Drawable drawable = context.getResources().getDrawable(R.drawable.bg);

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

二.自定義擴(kuò)展名的zip格式的皮膚

技術(shù)點(diǎn)在于如何去讀取zip文件中的資源以及皮膚文件存放策略

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

實(shí)現(xiàn)方法:

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

2. 在軟件中提供皮膚設(shè)置界面??梢栽诓藛位蛘咴谠O(shè)置中??蓞⒖寄E、搜狗輸入法、QQ等支持換膚的軟件。

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

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

責(zé)任編輯:閆佳明 來源: cnblogs
相關(guān)推薦

2020-08-24 19:00:20

國產(chǎn)操作系統(tǒng)操作系統(tǒng)

2013-04-24 10:23:02

Android基于膚色Android開發(fā)

2011-09-08 11:18:53

Widget

2021-12-30 10:00:07

3DAI 人工智能

2024-01-25 08:24:23

場景編程方式控制計(jì)時(shí)

2010-09-07 16:31:27

CSS

2010-01-27 18:06:03

Android短信發(fā)送

2016-08-11 08:24:39

AndroidIntentShareTestDe

2012-12-28 14:32:34

Android開發(fā)Handler異步處理

2021-12-28 11:13:10

iOS蘋果系統(tǒng)

2014-12-31 17:12:54

模糊查詢模糊查詢

2018-07-02 13:10:05

Android短信驗(yàn)證

2012-07-27 14:45:12

傲游瀏覽器傲游瀏覽器

2023-06-15 10:05:26

人工智能

2021-05-19 10:10:11

人工智能AI谷歌

2013-05-10 16:57:26

Android開發(fā)定制皮膚

2010-01-27 15:15:13

Android多媒體錄

2013-03-29 09:49:06

Android開發(fā)小功能實(shí)現(xiàn)

2010-01-20 09:15:57

Windows 7自動(dòng)更換壁紙

2011-06-24 15:30:22

QT 皮膚 QSS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)