px: 像素,就是屏幕上实际的像素点单位。
dip:或者dp, (device independent pixels)设备独立像素, 与设备屏幕有关。
sp: (scaled pixels — best for text size):类似dp, 主要处理字体的大小。
dpi(dot per inch):屏幕像素密度,每英寸多少像素
density:density表示每英寸有多少个显示点(逻辑值),它的单位是dpi
常见的density有下面几种:
HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320;
QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240;
WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素;
WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272
获取屏幕尺寸信息的函数:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
px与dip转换公式:
换算公式为:
pixs =dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
pixs = dips * (densityDpi/160.
dp与px转换的方法
public static int dip2px(Context context, float 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.getResource().getDisplayMetrics().density;
return (int)(pxValue / scale +0.5f);
}