android手機分辨率

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}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章