1. 程式人生 > >Android drawable資料夾的使用

Android drawable資料夾的使用

開學到現在一直都在學著去搞明白一個簡單的遊戲。寫完程式碼之後,發現主介面顯示的某些圖片比正常的大了許多。
本來以為是程式碼寫錯了,反反覆覆,來來回回的檢查程式碼,真心沒有錯誤。。。崩潰了!!!
後來就嘗試著把圖片從drawable-mdpi中移動到了hdpi資料夾下,在執行程式的時候,竟然好了!!
MyGod,越是簡單的東西就越容易出錯。也只能怪自己學的不紮實不透徹了。在網上找到一些解釋:
android為開發者提供了兩種解決適配問題的辦法,第一種方式是使用dip的單位(dip: device independent pixels(裝置獨立畫素). 
不同裝置有不同的顯示效果,這個和裝置硬體有關,一般我們為了支援WVGA、HVGA和QVGA 推薦使用這個,不依賴畫素);
另一種是使用不同的drawable資料夾,如下圖:


-hdpi    近似於240dpi的高階顯示密度的螢幕
-mdpi    近似於160dpi的中級顯示密度的螢幕
-ldpi    近似於120dpi的低階顯示密度的螢幕
-xhdpi   近似於320dpi的超高階顯示密度的螢幕

圖片縮放比列為 3 :4:6:8   ldpi,mdpi,hdip,xhdip
Android系統會手機螢幕的大小及螢幕尺寸去選擇不同資料夾下的圖片資源,以此來實現在不同大小螢幕解析度下適配的問題。
比如在一個低解析度的手機上,Android就會選擇ldpi資料夾下的圖片,但是如果沒有在ldip的資料夾下找到相關的資原始檔,
Android系統會首先從hdpi資料夾中選擇檔案,然後對圖片資源進行縮放處理,顯示在螢幕上;如果hdpi資料夾下也沒有的話,
會在預設的drawable資料夾中尋找。因此圖片放錯資料夾的話,就會顯示大小不同。如圖正常顯示的圖片:


放大後的圖片:

出現第二個圖的原因是將hdpi下的圖片放到了預設的資料夾下。
本身是同一張圖片,由於系統沒有在hdpi資料夾中找到對應圖片,在預設的資料夾下找到了,但是這時系統會認為該圖適用於中等解析度的螢幕,
如果直接放到高解析度的手機上不能適配,所以系統會自動的將圖片放大,所以雖然是同一張圖片,但是現實出來就是一個正常,一個被放大。
同理,如果同一張圖片,放在ldpi的資料夾下,在低解析度的手機上顯示正常,但是如果放在hdpi資料夾中,系統認為該圖是高解析度顯示的,
要將圖片縮小處理,所以顯示出來的效果就是圖變小了。
所以才會出現明明是一張圖片,只是放在不同的資料夾中,顯示出來的效果就不同!