偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

想讓Android更獨(dú)特?來試試自己DIY一套圖標(biāo)包

移動(dòng)開發(fā) Android
眾所周知,Android 的特點(diǎn)之一,在于它為用戶提供了相對(duì)而言更大的自由度,而這也成了很多智能手機(jī)愛好者選擇 Android 的理由之一。要知道,對(duì)于個(gè)性化來說,Android 用戶除了更換壁紙鈴聲,還能更換應(yīng)用圖標(biāo)、系統(tǒng)配色、字體、主題、桌面小工具......甚至整個(gè)桌面啟動(dòng)器。

眾所周知,Android 的特點(diǎn)之一,在于它為用戶提供了相對(duì)而言更大的自由度,而這也成了很多智能手機(jī)愛好者選擇 Android 的理由之一。要知道,對(duì)于個(gè)性化來說,Android 用戶除了更換壁紙鈴聲,還能更換應(yīng)用圖標(biāo)、系統(tǒng)配色、字體、主題、桌面小工具......甚至整個(gè)桌面啟動(dòng)器。

[[222971]]

如此之多的自定義項(xiàng)目,讓每臺(tái) Android 手機(jī)都可以做到「千機(jī)千面」,體現(xiàn)屬于你自己的個(gè)性。

那么,如果你之前研究過如何個(gè)性化 Android,你肯定聽說過「圖標(biāo)包」這個(gè)概念。一般來說,圖標(biāo)包在 Android 上,指的是一些適用于一些第三方啟動(dòng)器的自定義圖標(biāo)集合包,通常作為一個(gè) APK 進(jìn)行安裝。

但這些 Android 圖標(biāo)包畢竟都是公開下載的,動(dòng)手能力強(qiáng)的朋友們可能覺得還不夠個(gè)性想自己畫一套;也有的看上了別家 ROM 主題中的圖標(biāo),想在自己的啟動(dòng)器上用......

問題來了,有沒有可能自己動(dòng)手,DIY 一套圖標(biāo)包呢?要是你動(dòng)了這個(gè)念頭,恭喜你,本文就是為你準(zhǔn)備的。

何為 NanoIconPack

NanoIconPack 是一套簡單輕量的圖標(biāo)包模版,由國人 By_syk 開發(fā),并以 Apache 許可證 2.0 版開源,任何人都可以基于這套模版二次開發(fā)圖標(biāo)包。

 

[[222972]]

這套模版功能不多,但勝在簡潔實(shí)用,界面友好,同時(shí)兼容性也非常高。除了「老三樣」Nova、Apex 和 ADW,它還支持各種其他沿用圖標(biāo)包規(guī)范的啟動(dòng)器。

已經(jīng)有很多圖標(biāo)包是基于 NanoIconPack 二次開發(fā)而成,其中包括 PDC 圖標(biāo)包、Cardicons Ⅱ 圖標(biāo)包 等。如果你也想自己繪制圖標(biāo)并打包,那么選擇在 NanoIconPack 的基礎(chǔ)上進(jìn)行二次開發(fā),是一個(gè)非常好的選擇。

理論上,二次開發(fā) NanoIconPack 最好是擁有一定的 Android 開發(fā)基礎(chǔ);但如果你完全沒有接觸過編程,也沒關(guān)系,只要跟著本文中描述的步驟走,膽大心細(xì),你也可以打造出屬于自己的一款圖標(biāo)包。

準(zhǔn)備圖標(biāo)

既然要做圖標(biāo)包,準(zhǔn)備好圖標(biāo)自然是硬性條件。你可以選擇自己畫一套圖標(biāo),還可以從其他 ROM(例如 MIUI)的主題文件中提取。

需要注意的是,圖標(biāo)的尺寸雖然沒有硬性規(guī)定,但最好是 192*192 px,這一數(shù)值也是 Android 上 xxxhdpi 分辨率圖標(biāo)的默認(rèn)大小。更大也不是不可以,但不要太大,否則可能會(huì)影響到啟動(dòng)器的正常顯示。

圖標(biāo)的命名也有些講究,開發(fā)者 By_syk 在 Wiki 上給出了如下命名規(guī)則建議:

  • 圖標(biāo)文件名(不包括 .png 擴(kuò)展名)僅使用小寫字母+數(shù)字+下劃線([a-z\d_]+)
  • 不能使用數(shù)字打頭(\D.*)
  • 重名則以下劃線加數(shù)字添加后綴(_1)
  • 為了避免與上一條重名規(guī)則沖突,應(yīng)用名中的英文與數(shù)字之間不要用下劃線隔開。例如相機(jī) 360 應(yīng)命名為 camera360而不是 camera_360.png

正確的例子:

  • cuto.png chrome_dev.png camera_1.png
  • 錯(cuò)誤的例子:Calendar.png 500px.png camera_360.png

因?yàn)槟0娴奈募幸汛嬖谡嘉环瑐€(gè)人建議將數(shù)個(gè)常用的系統(tǒng)圖標(biāo)以如下方式命名,以節(jié)省一定的工作量:

  • 計(jì)算器 - calculator
  • 日歷 - calendar
  • 相機(jī) - camera
  • 時(shí)鐘 - clock
  • 通訊錄 - contacts
  • 電子郵件 - email
  • 圖庫 - gallery
  • 音樂 - music
  • 電話 - phone
  • 設(shè)置 - settings
  • 短信 - sms

準(zhǔn)備好之后,將它們保存到一個(gè)文件夾備用。

 

本文中將使用提取自 MIUI「凹凸世界」主題文件中的圖標(biāo)為范例。圖標(biāo)原作者:hynick

安裝 Android Studio 和 SDK 工具 & 注冊(cè) GitHub 賬號(hào)

為了繼續(xù)接下來的開發(fā)工作,你需要安裝一個(gè) Android Studio 以及相應(yīng)的 SDK 工具包。

 

請(qǐng)務(wù)必注意,在安裝過程中可能會(huì)遇到需要對(duì)網(wǎng)絡(luò)環(huán)境進(jìn)行處理才能解決的錯(cuò)誤,請(qǐng)?jiān)诰W(wǎng)絡(luò)上查找相應(yīng)教程進(jìn)行解決。

本文中將不再贅述相關(guān)安裝過程。

同時(shí),如果你之前沒有 GitHub 賬號(hào),你還需要去新注冊(cè)一個(gè)。注冊(cè) GitHub 賬號(hào)很簡單,點(diǎn)擊 Sign Up 后按提示輸入對(duì)應(yīng)信息即可。在此同樣不詳細(xì)討論了。

將項(xiàng)目導(dǎo)入 Android Studio

萬事準(zhǔn)備周全后,打開 Android Studio,在右上角找到 File 選項(xiàng),選擇 New → Project from Version Control → GitHub:

 

然后會(huì)彈出 Clone Repository 窗口,如圖所示,在 URL 處填入 https://github.com/by-syk/NanoIconPack.git (此時(shí)可以點(diǎn)擊 Test 按鈕測(cè)試能否正常訪問),將 Directory Name 改成自己為圖標(biāo)包起的名字,點(diǎn)擊 Clone .

 

如果之前沒有用 GitHub 賬號(hào)登錄過 Android Studio,那此時(shí)會(huì)提示你登錄 GitHub,按提示正常登錄后執(zhí)行上述操作即可。

接下來,你需要耐心等待 Cloning 操作完成。

一旦完成后, Android Studio 便會(huì)自動(dòng)顯示項(xiàng)目界面:

 

界面中左側(cè)顯示的是項(xiàng)目的文件夾與文件,其中的 /nanoiconpack 為庫代碼,/app 為應(yīng)用代碼。下文中的內(nèi)容,基本上只涉及到對(duì)應(yīng)用代碼,也就是 /app 目錄的修改。

添加圖標(biāo)

該往模版里添加圖標(biāo)了。找到 /app 下的 /res/drawable 目錄,右鍵點(diǎn)擊,選擇「Show in Explorer」選項(xiàng),此時(shí)應(yīng)該會(huì)顯示 res 文件夾,雙擊打開 drawable-nodpi :

 

此時(shí)將里面的文件全部刪除,再將之前準(zhǔn)備好的圖標(biāo)拷貝進(jìn)去。

如果你還準(zhǔn)備了 384*384 px 的大尺寸圖標(biāo)樣本,你可以回到上一級(jí)目錄中,將那些圖標(biāo)拷貝到 mipmap-nodpi 文件夾中,這樣會(huì)讓圖標(biāo)包應(yīng)用中自動(dòng)顯示高清圖標(biāo)。但這些圖標(biāo)僅用于展示,不會(huì)應(yīng)用于啟動(dòng)器。

接下來,在 Android Studio 中找到 /res/drawable/values 下的 icon_pack.xml,這其中包含了兩個(gè) icon_pack.xml 文件,有一個(gè)帶有中國國旗圖標(biāo),作為簡體中文本地化的版本。

 

這個(gè)文件的作用是記錄圖標(biāo)包中包含的圖標(biāo)文件名,以及圖標(biāo)文件相對(duì)應(yīng)的應(yīng)用名。以 values\icon_pack.xml 文件為例,其中第一部分為圖標(biāo)的文件名:

  1. <!-- File name (no suffix) list of all icons in /res/drawable-nodpi/ --> 
  2. <!-- Names like "Calendar", "500px", "camera_360" are not allowed or recommended. --> 
  3. <string-array name="icons" translatable="false"
  4.     <!-- A --> 
  5.     <item>alipay</item> 
  6.     <item>amazon_kindle</item> 
  7.     <item>autonavi</item>   

 

第二部分為每個(gè)圖標(biāo)文件相對(duì)應(yīng)的英文應(yīng)用名:

  1. <!-- Corresponding app name list of all icons in /res/drawable-nodpi/ --> 
  2. <string-array name="icon_labels"
  3.     <!-- A --> 
  4.     <item>Alipay</item> 
  5.     <item>Amazon Kindle</item> 
  6.     <item>Autonavi Maps</item> 

 

請(qǐng)謹(jǐn)記,每個(gè)圖標(biāo)文件名與應(yīng)用名之間都必須呈一一對(duì)應(yīng)關(guān)系。也就是說,不能出現(xiàn)寫了文件名,但應(yīng)用名有些寫了,有些不寫的情況。雖然你可以選擇全部不寫應(yīng)用名,但我不推薦這么做。

編輯完畢后,就可以打開帶著國旗的 zh\icon_pack.xml,這一塊用于填寫中文應(yīng)用名:

  1. <!-- Corresponding app name list of all icons in /res/drawable-nodpi/ --> 
  2. <string-array name="icon_labels"
  3.     <!-- A --> 
  4.     <item>支付寶</item> 
  5.     <item>亞馬遜 Kindle</item> 
  6.     <item>高德地圖</item> 

 

自此,icon_pack.xml 修改完成。接下來需要修改的是 drawable.xml,位于 /res/xml 目錄下:

 

這個(gè)文件的作用又是什么呢?你可以在 Nova Launcher 中直接瀏覽圖標(biāo)包,而且會(huì)發(fā)現(xiàn)它還能分門別類地顯示圖標(biāo):

 

而這個(gè)特性的背后就是 drawable.xml 的功勞了:它用于給 Nova Launcher 等啟動(dòng)器提供圖標(biāo)選擇列表,同時(shí)告訴啟動(dòng)器哪些圖標(biāo)屬于哪個(gè)類型。

NanoIconPack 模版默認(rèn)提供了三個(gè)不同的分類。如果你嫌麻煩,就基于這三個(gè)分類編輯就好。第一個(gè)分類「Basic」中存在一些占位符:

  1. <category title="Basic" /><!-- Copy basic icons here from All category --> 
  2. <!--<item drawable="browser" />--> 
  3. <!--<item drawable="calculator" />--> 
  4. <item drawable="calendar" /> 
  5. <!--<item drawable="camera" />--> 
  6. <!--<item drawable="clock" />--> 

你或許已經(jīng)注意到了,item drawable= 后跟著的是每個(gè)圖標(biāo)的文件名。所以,務(wù)必注意不要寫錯(cuò)。

如果你聽了我上文中的勸告(命名常用系統(tǒng)應(yīng)用的圖標(biāo)文件名),你現(xiàn)在需要做的就是,把占位符開頭的 刪除。就像這樣:

  1. <category title="Basic" /><!-- Copy basic icons here from All category --> 
  2. <item drawable="browser" /> 
  3. <item drawable="calculator" /> 
  4. <item drawable="calendar" /> 
  5. <item drawable="camera" /> 
  6. <item drawable="clock" /> 

然后,剩下的兩個(gè)分類「Game」和「Alternative」,你可填寫可不填寫,如果不想填寫的話,刪掉就好。但是結(jié)尾的「All」分類一定要填,像這樣將圖標(biāo)包的所有文件都填進(jìn)去:

 

填寫完畢后,這個(gè)文件的工作也結(jié)束了。最后,我們要找到與 drawable.xml 同樣位于 /res/xml 目錄下的 appfilter.xml。

可別小看它,這個(gè)文件非常重要!它決定了每個(gè)圖標(biāo)與程序之間的對(duì)應(yīng)關(guān)系,也就是說,因?yàn)橛兴拇嬖?,啟?dòng)器才可以自動(dòng)識(shí)別圖標(biāo)包中適配的應(yīng)用,并將圖標(biāo)覆蓋到每個(gè)應(yīng)用上。

這個(gè)文件由許多條 代碼所組成,一條代碼的結(jié)構(gòu)大致如此:

 

  1. <item  
  2. component="ComponentInfo{[包名]/[啟動(dòng) Acrivity 名]}"  
  3. drawable="[圖標(biāo)文件名]" /> 

應(yīng)用包名是每個(gè) Android 應(yīng)用的唯一標(biāo)識(shí)符,系統(tǒng)依據(jù)包名來判斷并識(shí)別應(yīng)用。縱使一個(gè)應(yīng)用改名換姓,只要包名一致,系統(tǒng)就會(huì)認(rèn)為它們是同一個(gè)應(yīng)用。

舉個(gè)例子:有一天,我派的 Cuto 壁紙突然決定將應(yīng)用名改成 Otuc,圖標(biāo)也改掉了。

但在安裝 Otuc 時(shí),由于我派在改名字的時(shí)候沒有改掉包名,系統(tǒng)依然判斷「Otuc」和「Cuto」是同一個(gè)應(yīng)用,會(huì)直接將舊應(yīng)用做更新處理,而不是重新裝一個(gè)新的。

 

另一個(gè)「啟動(dòng) Activity」是一個(gè)比較復(fù)雜的概念,簡單來說就是,它決定了當(dāng)你在啟動(dòng)器上點(diǎn)擊圖標(biāo)時(shí),應(yīng)用會(huì)打開哪個(gè)頁面。

所以,這兩個(gè)元素是圖標(biāo)包區(qū)分應(yīng)用的關(guān)鍵;而這也允許了不同應(yīng)用使用同一個(gè)圖標(biāo)文件。

舉個(gè)例子,在一臺(tái) Google Pixel 上,「相機(jī)」應(yīng)用的 適配代碼大致是這樣的:

 

  1. <item 
  2.     component="ComponentInfo{com.google.android.GoogleCamera/com.android.camera.CameraLauncher}" 
  3.     drawable="camera" /> 

而對(duì)于一加手機(jī)而言,適配代碼則會(huì)變成:

 

  1. <item 
  2.     component="ComponentInfo{com.oneplus.camera/com.oneplus.camera.OPCameraActivity}" 
  3.     drawable="camera" /> 

看出來了嗎?由于手機(jī)廠商的不同,「相機(jī)」應(yīng)用的包名和啟動(dòng) Activity 均有區(qū)別;但以這種方式,它們都可以調(diào)用圖標(biāo)包中的 camera.png 文件。

那么,問題又來了:該去哪里找這些包名和啟動(dòng) Activity 呢?畢竟對(duì)于這些基本應(yīng)用來說,每家手機(jī)廠商可能都不一樣,工作量還是頗大的。

好在開發(fā)者 By_syk 為我們提供了一個(gè)值得參考的模版文件,其中已經(jīng)包含了很多系統(tǒng)應(yīng)用以及常見應(yīng)用的 代碼,只要尋找自己圖標(biāo)包中包含的應(yīng)用,然后復(fù)制粘貼就可以了。

 

但如果你想要適配的應(yīng)用,模版中也不存在,怎么辦?這時(shí)候就需要用到 Package Name Viewer 2.0 這款小工具了。

 

小工具會(huì)將手機(jī)中已安裝的應(yīng)用分為用戶應(yīng)用和系統(tǒng)應(yīng)用兩類,你可以選擇手動(dòng)翻找,或是進(jìn)行搜索。再用 Cuto 做個(gè)例子,在列表中找到 Cuto 之后,點(diǎn)擊就能看到這個(gè)窗口:

 

上方的 com.sspai.cuto.android 即為包名,下方的 com.sspai.cuto.android.EntryActivity 自然就是啟動(dòng) Activity 了。你可以選擇復(fù)制并發(fā)送到電腦上,按上方的說明填寫 代碼。

至此,添加圖標(biāo)的部分就結(jié)束了。這一塊的具體工作量取決于你想要適配的圖標(biāo)多少,但也是最麻煩的一部分,需要有一定的耐心去編輯文件。

好在,結(jié)束了這一塊之后圖標(biāo)包已經(jīng)趨近完成了,接下來的工作都很簡單。

配置圖標(biāo)包

正如上文所述,Android 系統(tǒng)需要依照應(yīng)用包名來識(shí)別應(yīng)用,所以你也要為你的圖標(biāo)包起一個(gè)包名,順便還要為它設(shè)置一個(gè)版本號(hào)。

找到左側(cè)的 Gradle Scripts 選項(xiàng),雙擊打開 build.gradle (Module: app) :

 

再找到文件中的 defaultConfig 區(qū)域。其中 applicationId 即為包名:

 

包名的起名方式可以參考如下模版:com.[你的名字].iconpack.[圖標(biāo)包的名字] (均只能使用英文字母)。

versionCode 和 versionName 均為版本號(hào)的一部分,前者可以理解為「內(nèi)部版本號(hào)」,后者則是顯示在前臺(tái)的版本號(hào),可以依據(jù)你自己的想法進(jìn)行設(shè)置。

另外在這一部分還需要注意,如果你希望你的圖標(biāo)包能向下兼容(最低 Android 5.0),那么你需要填入 minSdkVersion 和 targetSdkVersion.

后者填入最新的 SDK 版本即可(Android 8.1, API Level 27),而前者決定了應(yīng)用最低可以在哪個(gè)版本的系統(tǒng)上安裝,建議填入代表 Android 5.0 的 21.

既然圖標(biāo)包也是一個(gè)應(yīng)用,那么你顯然需要為它準(zhǔn)備一個(gè)圖標(biāo) —— 嚴(yán)格來說是四個(gè)。

說是四個(gè)圖標(biāo),原因是應(yīng)用圖標(biāo)文件 ic_launcher.png 分布在 /mipmap-hdpi、/mipmap-xhdpi、/mipmap-xxhdpi、/mipmap-xxxhdpi 這四個(gè)目錄下,它們分別代表著四個(gè)不同的分辨率:72*72、96*96、144*144 和 192*192。

 

不過這倒不是什么麻煩事,做一個(gè)最大分辨率的圖標(biāo),再分別縮放保存即可。

接下來,回到 Android Studio 的項(xiàng)目中,我們需要編輯一下 /res/values 下的 strings.xml。

 

這個(gè)文件是用來決定圖標(biāo)包的名字、作者,以及顯示在圖標(biāo)包「關(guān)于」界面中的內(nèi)容的。

 

app_name 處用于填寫圖標(biāo)包的名字,developer_name 處填寫你自己的名字。

文件下面的內(nèi)容會(huì)在「關(guān)于」界面中顯示。 NanoIconPack 默認(rèn)自帶了很多內(nèi)容占位符,包括圖標(biāo)包作者、捐贈(zèng)信息等。如果你不需要顯示某項(xiàng)信息,可以自行留空,但不要?jiǎng)h除。

 

這個(gè)文件和 icon_pack.xml 一樣,也有一個(gè) 帶國旗的 zh\ 版本(如上圖所示),記得一并編寫。最后呈現(xiàn)在應(yīng)用中的效果就像這樣:

 

信息允許換行,但需要使用 \n 作為換行符。另外,一些特定符號(hào)(比如說版權(quán)所有的©️)需要使用代碼代替,請(qǐng)注意 Android Studio 提示的錯(cuò)誤信息。

NanoIconPack 還可以編輯圖標(biāo)包應(yīng)用的主題色,相關(guān)文件是位于 /res/values 下的 colors.xml:

 

如果你不太熟悉顏色的代碼以及搭配,可以試試在 Material Palette 網(wǎng)站上隨便選兩個(gè)看上去順眼的顏色,它會(huì)自動(dòng)幫你生成一套搭配方案。

 

具體的效果如下:

 

到了這一步,圖標(biāo)包的開發(fā)工作已經(jīng)接近尾聲,接下來要做的,就只剩測(cè)試和打包了!

測(cè)試并打包

萬事俱備,只欠打包;你很快就能用上自己 DIY 的圖標(biāo)包了!

不過在打包之前,最好還是在設(shè)備上測(cè)試一下,看看有沒有出現(xiàn)什么問題。首先要確認(rèn)在 Android 設(shè)備上啟用了開發(fā)者選項(xiàng),并且啟用 USB 調(diào)試功能。

 

然后點(diǎn)擊 Android Studio 上的 Run 按鈕,會(huì)彈出窗口,讓你選擇連接到電腦上的設(shè)備:

 

接下來,點(diǎn)擊 OK 即可。如果一切順利,你就會(huì)發(fā)現(xiàn)設(shè)備上自動(dòng)打開了圖標(biāo)包應(yīng)用,確認(rèn)無誤后,就可以打包為 APK 安裝包了。

在 Android Studios 中找到 Build → Generate Signed APK:

 

該選項(xiàng)用于生成已經(jīng)簽名好的 APK 安裝包,至于如何進(jìn)行操作,建議參考 Google 官方的文檔。

只有最后一步需要注意,務(wù)必在 Versions 處打上 V1 的勾,不然可能會(huì)出現(xiàn)無法安裝的情況:

 

當(dāng)然,生成安裝包時(shí)也有可能會(huì)出錯(cuò),具體的錯(cuò)誤信息會(huì)顯示在底部的 Messages 處,請(qǐng)善用搜索引擎,網(wǎng)絡(luò)上一定會(huì)有解決方案。

好了,你的 DIY 圖標(biāo)包已經(jīng)正式打包完成了!快去啟動(dòng)器上換上試試吧!

 

責(zé)任編輯:未麗燕 來源: 少數(shù)派
相關(guān)推薦

2020-10-19 10:35:43

iOS設(shè)備尺寸

2014-12-02 10:02:21

Android異步任務(wù)

2020-03-06 10:48:29

業(yè)務(wù)中斷業(yè)務(wù)安全

2020-05-27 15:10:31

戴爾

2020-07-10 12:06:28

WebpackBundleless瀏覽器

2019-10-11 15:58:25

戴爾

2021-05-27 07:12:19

單點(diǎn)登錄系統(tǒng)

2012-07-03 09:38:42

前端

2012-10-24 09:42:27

數(shù)據(jù)安全BYOD云數(shù)據(jù)

2025-04-07 07:45:00

AI模型神經(jīng)網(wǎng)絡(luò)

2020-08-25 08:03:59

測(cè)試Sharness結(jié)構(gòu)

2018-08-31 08:42:48

LinuxUnix實(shí)用程序

2009-06-23 18:01:45

Ajax框架源代碼

2010-06-09 17:00:43

UML試題

2023-03-03 17:00:00

部署Linux內(nèi)核

2017-01-22 08:49:29

Android庫開源程序員數(shù)據(jù)

2022-06-17 11:10:43

PandasPolarsPython

2020-11-04 16:34:45

單元測(cè)試技術(shù)

2020-12-02 08:31:47

Elasticsear
點(diǎn)贊
收藏

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