前言:
大一寒假时接触Android,到现在已经有一年多了,感觉过的好快啊!学习Android像素这方面的时候,在网上看过一些关于这方面的文章,现在结合自己的一些总结经验,写一篇关于这方面的博客,以便以后找工作时候好复习下。
进入主题:
知识点讲解:
dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
dpi(dot per inch):屏幕像素密度,每英寸多少像素(分辨率)
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用。
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
in:表示英寸,是屏幕的物理尺寸。每英寸等于 2.54 厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是 3.2 英寸,表示手机的屏幕(可视区域)对角线长度是 3.2*2.54 = 8.128 厘米。读者可以去量一量自己的手机屏幕,看和实际的尺寸是否一致。
要点讲解:
1.dp和px相互转换
代码示例:
<span style="font-family:SimSun;">public class DensityUtil {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
} </span>
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)
当屏幕densityDpi=240时,使用hdpi标签的资源
当屏幕densityDpi =160时,使用mdpi标签的资源
当屏幕densityDpi =120时,使用ldpi标签的资源。
我们以每英寸160点的显示器为标准,1dip = 1px。
ldpi:75x75(宽高)
mdpi:100x100
hdpi:150x150
xhdpi:200x200
3.屏幕尺寸的划分
5寸以下小屏幕(不包括5寸)5-7寸大频幕(不包括7寸)
7寸平板
4.屏幕分辨率的划分
VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素;
HVGA:Half-size VGA,即:VGA的一半,分辨率为480×320,像三星盖世Ace S5830就是使用这分辨率;
QVGA:Quarter VGA,即:VGA的四分之一,分辨率为320×240,一般用于小屏手机 像三星盖世Mini S5570就是使用这分辨率;
WQVGA:Wide Quarter VGA,即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272;
WVGA:Wide Video Graphics Array,即:扩大的VGA,分辨率为800×480像素,像三星i9000就是使用这分辨率;
FWVGA:Full Wide VGA ,数码产品屏幕材质的一种,VGA的另一种形式,比WVGA分辨率高,别名 : Full Wide VGA, ,其分辨 率为854×480象素(16:9)。
1.比如我在布局中设置,layout_width="200dip",此时你会在布局中获取当前View的属性值,getMeasuredWidth()
=600px,记住不管你设置View的宽高是什么单位,最后都以像素(px)显示,在这里我的手机的densityDpi=480,也就是160的3倍,density=3,根据px=dip*density。
最后的最后:
Android像素这方面的基础总结的七七八八,肚子咕噜咕噜的叫,吃饭去!