1、手機分辨率
4:3
VGA 640*480 (Video Graphics Array)
QVGA 320*240 (Quarter VGA)
HVGA 480*320 (Half-size VGA)
SVGA 800*600 (Super VGA)
5:3
WVGA 800*480 (Wide VGA)
16:9
FWVGA 854*480 (Full Wide VGA)
HD 1920*1080 High Definition
QHD 960*540
720p 1280*720 標清
1080p 1920*1080 高清
手機:
小米1 854*480(FWVGA)
小米2 1280*720
2、 分辨率對應DPI
“HVGA mdpi”
"WVGA hdpi "
"FWVGA hdpi "
"QHD hdpi "
“720P xhdpi”
"1080P xxhdpi "
3、各種尺寸單位的意義
dp: Density-independent Pixels
一個抽象的單元,基於屏幕的物理密度。
(dp和dip的意義相同,所以不用區別對待)。
這些單元是相對於160dpi(dots per inch)的屏幕說的,在160dpi的屏幕上,1dp粗略地等於1px。
當運行在更高密度的屏幕上的時候,要繪製1dp的像素數量會放大一個比例,這個比例就是和屏幕密度(dpi)相關。
類似的,在一個低密度的屏幕上,像素數目會縮小一個比例。
dp到px的這個比例將會隨着屏幕的密度變化,而不是直接的比例關係。
用dp單位,而不是px,是一種簡單的屏幕密度適配解決方式。
換句話說,它提供了一種方式,可以在多種設備上維持真實尺寸一致性。
sp:Scale-independent Pixels
這個有點像dp單位,但是它也根據用戶的字體設置(font preference)縮放尺寸。
建議用這種尺寸單位來標註字體尺寸,這樣它們將會因爲屏幕密度和用戶設定而調整。
pt
Points 1/72 inch(英寸),根據屏幕的物理尺寸。
px: Pixels
相應於真實的像素。
這種單位不被建議,因爲真實的表達會根據設備的不同相差很遠。
每個設備上每英寸的像素數不同(密度不同),並且屏幕上總的像素數也不同(整體大小不同)。
4、尺寸單位轉換工具
public class DimenUtils {
public static int sp2px(Context context, float spValue) {
float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
public static int px2sp(Context context, float pxValue) {
float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
public static int dip2px(Context context, int dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}
Android中的DisplayMetrics這個類描述了關於顯示的各種信息,可以利用它查看設備的狀態,上述關於屏幕密度的標準的常量也是從這個類中看到的。
DisplayMetrics的toString()方法如下:
@Override
public String toString() {
return "DisplayMetrics{density=" + density + ", width=" + widthPixels +
", height=" + heightPixels + ", scaledDensity=" + scaledDensity +
", xdpi=" + xdpi + ", ydpi=" + ydpi + "}";
}
例如小米2S,DisplayMetrics中的toString()方法輸出如下:
DisplayMetrics{density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=345.0566, ydpi=342.23157}