被遺忘的Android mipmaps簡介

OneAPM官方技術部落格發表於2015-09-01

被遺忘的 Android mipmaps 簡介

【導讀】已經發布的 Android Studio1.1 版本是一個 bug 修復版本。在這個版本中,當你建立工程時一項改變將會吸引你的眼球。工程建立登陸的圖示會在 mipmap-resource 資料夾中,而不是 drawable 資料夾中。

使用 mipmap 資料夾存放啟動圖示的好處

Android 開發團隊認為使用 mipmap 資料夾儲存啟動圖示是最佳的開發方式。使用 mipmap 的最大優勢是你可以在各種螢幕密度的裝置下將資源儲存在 mipmap 資料夾下,然後對於特定螢幕密度的裝置你可以從 drawable 資料夾下去除掉與這個特定裝置無關的資源資訊。

我們用一個例子來說明這一特性。假設使用者有一個裝置被標識為xxhdpi的裝置,那麼開發者 apk 中的 drawable 資料夾下的其他解析度大小的資源,例如 xxxhdpi 解析度,就是不被需要的;換句話說,就是可以被去除掉的。然而應用圖示很可能是與其他資源圖片不同的,因為他可能佔據整個螢幕,因此你可能需要啟動圖示的解析度高於其他資源。而這時你為了裝置適配的原因,高解析度圖片所在的資料夾已經被你去除了,這時當程式執行時,系統會將原來低解析度的圖片進行拉伸,然而這種做法可能會導致產生一個醜陋的模糊的圖片。

另一方面,你可能會說,你並不會使用去除資源來減少 apk 大小的方式去製作不同版本的 apk 檔案。這個時候你用 mipmap 資料夾去儲存登陸圖示看上去不會產生任何意義。然而這並不意味著你不應該使用它,最好的使用它的理由莫過於 Android 開發團隊認為應該使用它,並且把它描述為了開發的最佳實踐。他們知道在 Android 的開發線上將會產生什麼樣的新特性,而且儘管沒有人能確定,但是 Android 開發團隊很可能計劃引入這樣一個新特性,就是在使用者下載 App 的時候,apk 會自動丟棄掉不合適的資原始檔

Android 登陸 mipmap 的歷史

在 Android 中 mipmap 資原始檔夾很早就出現了,這個時間點遠遠早於他被介紹為應該作為 Android 開發社群應該大規模使用它的時間。Android 的官方團隊並沒有釋出過多的原因來說明為什麼要使用 mipmap 資原始檔夾。在 Android 4.3 版本釋出的時候,Android 框架的卡法人員 hackbod 宣佈: 假如你正在為不同螢幕解析度版本的裝置製作不同版本的 app,那麼你應該去了解 mipmap 資原始檔夾,它與 drawable 資料夾確實是驚人的相似,除了它並不參與螢幕適配在你生成不同版本的目標 apk 時。 自從這個宣佈之後,如果你仔細觀察 Google 的產品,你會發現一些 app 確實這樣做了。效果是在展示時,僅僅只是向螢幕傳輸了所被需要的解析度的圖示,但是各種解析度的登陸圖示都別儲存到了 mipmap 資原始檔夾下。 隨著時間的推進,並沒有過多關於使用 mipmap 資原始檔夾儲存登陸圖片的訊息,知道 Android 5.0 出現在 AOSP 以及 Nexus 裝置出現在了市場上。Android 開發者的部落格上標出了準備好讓你的 app 登陸 Nexus6 和 Nexus9. 這篇博文透露了一個應該使用 mipmap 資料夾的理由: 提供解析度至少為 xxxhpdi 的app 圖示因為身背可以展示更大的圖示在登陸的時刻。最好的方法就是見app圖示放在 mipmap 資料夾下因為他將會根據螢幕解析度以及使用場景選擇合適解析度的圖片。例如 xxxhdpi 的圖示將會被展示在 xxhdpi 解析度的裝置上

使用 mipmap 建立 Android 工程

更新 Android Studio 到最新版本,任何一個新的工程都將會使用 mipmap 的方式建立。

將現有的工程改變為使用 mipmap 資料夾

假如你有一個優秀的工具 Android Asset Studio 去產生你的 Android 登陸圖示,你會注意到 mipmap 的改變已經被 assets 資料夾產生的結構所反映出來。 你的 assets 應該變得像之前的登陸圖示的結構那樣。res/ mipmap-mdpi/iclauncher.png (48x48 pixels) mipmap-hdpi/iclauncher.png (72x72) mipmap-xhdpi/iclauncher.png (96x96) mipmap-xxhdpi/iclauncher.png (144x144) mipmap-xxxhdpi/iclauncher.png (192x192) 同時你要改變你的 AndroidManifest.xml 檔案去使用 mipmap 作為啟動圖示: android:icon="@mipmap/iclauncher"

OneAPM 是應用效能管理領域的新興領軍企業。Mobile Insight 能以使用者真實使用感受為度量標準,檢測每次崩潰的發生,協助監控移動應用效能。想閱讀更多技術文章,請訪問 OneAPM 官方部落格

相關文章