Android 一直有螢幕破碎化的問題,

也就是螢幕尺寸, 解析的比率很多

所以要好好的了解其分類和關係

ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi
0.75 1 1.5 2 3 4
120 160 240 320 480 640
36x36 48x48 72x72 96x96 144x144 192x192

 

 

1. 先到官網Supporting Multiple Screens這篇有寫到

目前有6種解析度分法, 分別是

ldpi 約 120 dpi

mdpi 約 160 dpi

hdpi 約 240 dpi

xhdpi 約 320 dpi

xxhdpi 約 480 dpi

xxxhdpi 約 640 dpi

http://developer.android.com/guide/practices/screens_support.html

01.png

 

2. 接著有說明如何決定size 和 是用哪種解析度的表

基本上現在的code只要考慮解析度, size就由系統去決定怎麼分就好

02.png

 

3. 然後有提到各種size的基本解析度, 但是必須要在3.0以上的系統才定義的比較精準,

所以建議還是由系統自己分配就好了

03.png

 

4. 而最下面有一個表在說明各種size和解析度的例子,

可以看出來是沒有一個絕對相對應的關係

04.png

 

5. 打開Eclipse, 在res下可以發現相對應的drawable

其中Eclipse下比Android Stduio多了ldpi這分類

而系統使用圖檔的順序是

1. 先找符合的資料夾, 如果你是mdpi的尺寸就會優先使用mdpi內的圖

2. 如果找不到對應的圖就會考慮從更大解析的資料夾(ex: xhdpi)來縮圖

又或是從預測的資料夾(drawable 後面沒有接尺寸大小) 來找

05.png

 

6. 而Android下的res drawable也有相對應的分類

06.png

 

7. 可以在Android的資料夾下, 發現他也是用資料夾的方式來區分

07.png

 

8. 而已160 dpi 的 mdpi為1倍的基準

ldpi 是 0.75倍

hdpi 是 1.5倍

xhdpi 是 2倍

舉例來說, 你製作了一個 100 x 100的圖丟到了 mdpi資料夾內

這樣你就必須 丟 75 x 75 的圖到 ldpi, 150 x 150的圖到hdpi

以此類推

http://developer.android.com/training/multiscreen/screendensities.html

08.png

 

9. 而針對不同的size螢幕, 可以利用不同的layout資料夾來存放

像是layout-small, layout-normal, layout-large等等

不過在Android 3.2 已經不推薦這種方式了

09.png

 

10. 像是打開Eclpise, 自行創建layout-xlarge資料夾,

並將layout放置入內

10.png

 

11. 最後. 官網提供了幾點最好的實踐方法

1. 在layout的xml內要使用wrap_content, fill_parent或dp 等方式來表現
2. 不要使用固定的像素值(px) 來表示
3. 不要使用絕對layout (AbsoluteLayout 要被棄用了)
4. 提供不同的bitmap drawables來支援不同的螢幕解析度

11.png

 

arrow
arrow

    RX1226 發表在 痞客邦 留言(0) 人氣()