被遺忘的Android mipmaps簡介
被遺忘的 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 官方部落格。
相關文章
- 被遺忘的CSSCSS
- 那些被遺忘的Enix遊戲遊戲
- 被遺忘的Java關鍵字:transientJava
- 再談復現 Sora:被仰望與被遺忘的Sora
- iOS被開發者遺忘在角落的NSException(轉)iOSException
- 那迷人的被遺忘的語言:Prolog
- 應用機器學習時被遺忘的兩個步驟機器學習
- 易被遺忘的C/C++要點總結C++
- DDD值物件:被遺忘的價值 – SoftwareMill Tech Blog物件REM
- 《博德之門 3》開發者專訪:重返「被遺忘的國度」
- 被世界遺忘的掃雷遊戲,只有中國人還在沉迷遊戲
- 容易被遺忘的前端基礎:JavaScript 記憶體詳解前端JavaScript記憶體
- 世界首臺計算機發明人沃茲:被遺忘的英雄計算機
- 最實用也最容易被遺忘的 Linux 命令列使用技巧Linux命令列
- 被遺忘權的崩塌:當AI可以通過你的朋友瞭解你AI
- 從51.com到開心 10大即將被遺忘的web“部落”Web
- 被人遺忘的Memcached記憶體注射記憶體
- 容易遺忘的知識點總結
- 那些經常被遺忘的 Java 面試題Java面試題
- 被遺棄的執行緒執行緒
- Android簡介Android
- Eruda 一個被人遺忘的除錯神器除錯
- Shareaholic:三大SNS貢獻全球15%轉引流量 Google+被遺忘Go
- 密碼遺忘通關手冊密碼
- [譯] 被遺忘的物件導向程式設計史(軟體編寫)(第十六部分)物件程式設計
- 反射--我快要遺忘的重要知識點整理反射
- android Palette簡介Android
- Android LowMemoryKiller 簡介Android
- Android URI簡介Android
- Android提供的LruCache類簡介Android
- 可以被提交的表單元素簡單介紹
- reCAPTCHA Android API 簡介APTAndroidAPI
- Android.mk簡介Android
- MySQL 5.7遺忘root密碼重置記錄MySql密碼
- 網際網路出海風大雨大,融雲助力 App 守護使用者「被遺忘權」APP
- 一個提高N倍系統新能的程式設計點,卻總是被普通開發們遺忘程式設計
- 拒絕遺忘:高效的動態規劃演算法動態規劃演算法
- 知其所以然之永不遺忘的演算法演算法