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
2. 接著有說明如何決定size 和 是用哪種解析度的表
基本上現在的code只要考慮解析度, size就由系統去決定怎麼分就好
3. 然後有提到各種size的基本解析度, 但是必須要在3.0以上的系統才定義的比較精準,
所以建議還是由系統自己分配就好了
4. 而最下面有一個表在說明各種size和解析度的例子,
可以看出來是沒有一個絕對相對應的關係
5. 打開Eclipse, 在res下可以發現相對應的drawable
其中Eclipse下比Android Stduio多了ldpi這分類
而系統使用圖檔的順序是
1. 先找符合的資料夾, 如果你是mdpi的尺寸就會優先使用mdpi內的圖
2. 如果找不到對應的圖就會考慮從更大解析的資料夾(ex: xhdpi)來縮圖
又或是從預測的資料夾(drawable 後面沒有接尺寸大小) 來找
6. 而Android下的res drawable也有相對應的分類
7. 可以在Android的資料夾下, 發現他也是用資料夾的方式來區分
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
9. 而針對不同的size螢幕, 可以利用不同的layout資料夾來存放
像是layout-small, layout-normal, layout-large等等
不過在Android 3.2 已經不推薦這種方式了
10. 像是打開Eclpise, 自行創建layout-xlarge資料夾,
並將layout放置入內
11. 最後. 官網提供了幾點最好的實踐方法
1. 在layout的xml內要使用wrap_content, fill_parent或dp 等方式來表現
2. 不要使用固定的像素值(px) 來表示
3. 不要使用絕對layout (AbsoluteLayout 要被棄用了)
4. 提供不同的bitmap drawables來支援不同的螢幕解析度
留言列表