標籤:切圖 for sig des ade parent pretty 獨立 常量
Android把螢幕大小分成四種:small, normal, large, xlarge;
螢幕密度分成:low(ldpi), medium(mdpi), high(hdpi), extra high(xhdpi);各個螢幕密度之間的關係例如以下:
| 密度名稱 |
密度的參考值(dpi) |
關係 |
相應的螢幕解析度 |
| xxxhdpi |
640dpi |
|
|
| xxhdpi |
480dpi |
|
|
| xhdpi |
320dpi |
2.0 |
|
| hdpi |
240dpi |
1.5 |
800*480 |
| mdpi |
160dpi |
1.0 (基準) |
480*320 |
| ldpi |
120dpi |
0.75 |
320*240 |
dpi(dot per inch):每英吋像素點的個數,1英寸=2.54厘米,平時大家說的4.3英寸、4.5英寸事實上是螢幕對角線的長度。
dp(density independent pixel):獨立密度像素,使用dp作為單位設定控制項,無論螢幕或dpi多大,其顯示效果都是一致的;假設使用px,則會出現顯示不一致的效果。比如對於長度為160px的線段,在密度為160dpi。寬度為1英寸的螢幕上會填滿整個螢幕;而對於密度為320dpi,寬度相同為1英寸的螢幕上。僅僅會填滿半個螢幕。即對於兩個物理尺寸相同,可是dpi不同的螢幕,其顯示效果的差異會非常大。
pixel、dp、dpi的關係例如以下:
px = dp* (dpi/160)
原則1:在給Android介面切圖時。一般採用160dpi作為基準。由於以160dip作為基準,僅僅要切圖的長和寬的像素點個數是4的倍數,則xhdpi下該圖在長寬上的像素個數能夠乘以2,hdpi下乘以1.5,ldpi下乘以0.75。結果得到的長寬上的像素點個數都是整數。假設以240dpi作為基準,則240下切圖長寬的像素點個數須要是3的倍數,相應的在xhdpi下乘以1.333333,mdpi下乘以0.66666,ldpi下除以2;這樣會得到非整形的像素點個數。
QVGA, WQVGA的螢幕密度是:120
HVGA的螢幕密度是:160
WVGA的螢幕密度是:240
當中。ldpi的資源不是必須的,當提供hdpi的資源時。系統會自己主動將hdpi的資源縮小一半來適配ldpi的螢幕
註:螢幕密度和螢幕解析度是不同的概念,通過螢幕解析度和尺寸,能夠計算出螢幕密度;比如解析度為320*480,螢幕尺寸為3.2英寸(對角線長度)。則螢幕密度為:
Density = \frac{\sqrt{320^2+480^2}}{3.2}">
註: dip就是dp
sp(scale independent pixel):縮放無關像素。跟dp相似,唯一不同的是。該單位會受系統字型設定的影響,通經常使用在字型上。Android規範中規定的經常使用字型大小:
DisplayMetrics類
DisplayMetrics是用於描寫敘述螢幕相關參數的類。訪問DisplayMetrics的方法:
DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay.getMetrics(metrics);
然後就能夠訪問metrics變數中的各個常量、欄位和方法了
- density : 螢幕密度
- densityDpi: 螢幕密度,以dpi為單位
- heightPixels:螢幕高度,以像素為單位
- widthPixels:螢幕寬度,以像素為單位
- xdpi:螢幕X方向的螢幕密度
- ydpi:螢幕Y方向的螢幕密度
市場資料
排名前幾位的螢幕解析度:
| 解析度 |
百分比 |
螢幕密度 |
| 1280 * 720 |
29.2% |
267 ~ 293(hdpi, xhdpi) |
| 800 * 480 |
18.5% |
233 ~ 266(hdpi) |
| 854 * 480 |
13.8% |
195 ~ 217(mdpi, hdpi) |
| 1920 * 1080 |
10.6% |
367 ~ 400(xhdpi) |
| 960 * 540 |
10% |
220 ~ 244(hdpi) |
| 480 * 320 |
4.1% |
|
| 1184 * 720 |
3% |
|
資料來源:http://www.umindex.com/devices/android_resolutions
相關連結
- https://developer.android.com/design/style/devices-displays.html
- http://developer.android.com/training/basics/supporting-devices/screens.html
- http://www.25xt.com/allcode/4269.html
Android設計中的尺寸問題