android 在 API level 17 加入了 mipmap 技術,對 bitmap 圖片的渲染支持 mipmap 技術,來提高渲染的速度和質量。
mipmap 是一種很早就有的技術了,翻譯過來就是紋理映射技術。android 中的 mipmap 技術主要為了應對圖片大小縮放的處理,在android 中我們提供一個 bitmap 圖片,由於應用的需要(比如縮放動畫),可能對這個 bitmap 進行各種比例的縮小,為了提高縮小的速度和圖片的質量,android 通過 mipmap 技術提前對按縮小層級生成圖片預先存儲在內存中,這樣就提高了圖片渲染的速度和質量。
api 中通過 Bitmap 的 public final void setHasMipMap (boolean hasMipMap) 方法可以讓系統渲染器嘗試開啟 Bitmap 的 mipmap 技術。但是這個方法只能建議系統開啟這個功能,至於是否正真開啟,還是由系統決定。
res 目錄下面 mipmap 和 drawable 的區別也就是上面這個設置是否開啟的區別。mipmap 目錄下的圖片默認 setHasMipMap 為 true,drawable 默認 setHasMipMap 為 false。
google 建議大家只把 app 的啟動圖標放在 mipmap 目錄中,其他圖片資源仍然放在 drawable 下面。
將icon放置在mipmap文件夾還可以讓我們程序的launcher圖標自動擁有跨設備密度展示的能力
比如說一台屏幕密度是xxhdpi的設備可以自動加載mipmap-xxxhdpi下的icon來作為應用程序的launcher圖標,這樣圖標看上去就會更加細膩。
鑒於mipmap這個特性,回答上面提出的問題,我們將所有的資源圖片放在mipmap下面,Android系統將不得不耗費時間去尋找合適的圖片,相反,放在drawable相應文件夾下,Android系統很容易根據密度找到對應的資源文件。
把splash啟動圖片 和一些自己項目里要執行縮放動畫的圖片放進去即可 其余的還放在drawable下面。
放在mipmap下 系統也就是自動設置的setHasMipmap為true了 會提前進行一個壓縮 提高渲染的速度 其余的放里面就有點耗性能了。