Android中支持許多資源,包括圖片(Bitmap),對應於bitmap的文件夾是drawable,除了drawable,還有drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等,同一張圖片放到上面不一樣的文件夾中是有區別的,好比一張100 * 100像素大小的圖片,分別放在上述各個文件夾中,而後將其設置爲ImageView(假設寬高都是wrap_content)的圖片,那麼這個ImageView的大小是多少呢,或者說圖片的大小是多少呢?本文主要和你們闡述這個問題。固然,還有一個問題,若是在上述各個文件夾中都放置一張相同的圖片(內容相同,尺寸不一樣),那麼系統會選擇加載哪一張圖片呢?這個問題,系統有內部的選擇機制,簡單來講:系統會選擇最接近手機屏幕密度的圖片,因爲這個問題和本文主題關係不是很大,因此暫時不討論此類問題。.net
先介紹一些概念:blog
屏幕密度:單位英寸面積上的像素點數圖片
ldpi: 屏幕密度爲120的手機設備資源
mdpi: 屏幕密度爲160的手機設備(此爲baseline,其餘均以此爲基準,在此設備上,1dp = 1px)
it
hdpi: 屏幕密度爲240的手機設備
map
xhdpi: 屏幕密度爲320的手機設備
im
xxhdpi:屏幕密度爲480的手機設備img
說明:根據上表,咱們應該很容易算出一張圖片在不一樣手機上的寬和高是多少。文件
從上表能夠得出以下結論co
1. 圖片放在drawable中,等同於放在drawable-mdpi中,緣由爲:drawable目錄不具備屏幕密度特性,因此採用基準值,即mdpi
2. 圖片放在某個特定drawable中,好比drawable-hdpi,若是設備的屏幕密度高於當前drawable目錄所表明的密度,則圖片會被放大,不然會被縮小
放大或縮小比例 = 設備屏幕密度 / drawable目錄所表明的屏幕密度
3. 爲了更全面的適配全部設備,咱們應該提供一套針對主流屏幕密度的圖片(目前爲hdpi或xhdpi),其餘密度經過系統自動縮放獲得圖片