Android的尺寸单位:dp/sp/density

来源:互联网 发布:sql server 2008怎么用 编辑:程序博客网 时间:2024/06/05 15:27

dp:Density-independent pixel 密度独立像素
sp:scale-independent pixel 缩放独立像素

sp与dp类似,不同的是,sp用于文字单位,可以根据系统设定,缩放文字大小。

在深入了解这两个单位之前,先普及一下其他基础单位:

px:像素,简单理解,就是屏幕上的点,比如分辨率为300*480,横向有320个点,竖直方向有480个点

dpi:dots per inch,屏幕上每英寸的点数,同样是分辨率为320*480的分辨率,在2X3英寸的屏幕上:
dpi=320/2=480/3=160。同样的分辨率,放到4X6英寸的屏幕上,dpi就只有80了,图像看起来会变得模糊

ppi:对角线上的像素点数/对角线的长度。ppi=dpi。常用的4.7,5.0英寸屏幕,指的就是对角线长度

dp的定义:在160dpi的屏幕上,1个像素所占的长度,1dp=1px=(2/320) inch = 1/160 inch。
可以把dp理解为一个固定的物理长度。

分辨率 尺寸 dpi dp density 320*480 2X3 inch 160 160 1 480*800 2X3 inch 480/2=240 160 1.5

说明: (横向)
同样是2inch宽的屏幕上,320分辨率下,dpi为160,此时1dp=1px,屏幕宽度为 320dp
480分辨率下,dpi=480/2=240, 1dp=240/160=1.5px ,屏幕宽度为:480/1.5=320dp
可以这样理解:2inch /(1/160) inch = 320

获取和计算:
方法1:

DisplayMetrics outMetrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(outMetrics);int width=outMetrics.widthPixels;int hight=outMetrics.heightPixels;float density=outMetrics.density;int dpi=outMetrics.densityDpi;

方法2:

Resources resources = this.getResources();  DisplayMetrics dm = resources.getDisplayMetrics();

计算: dp=width/density

Android 项目不同文件夹的设置:

文件 Size DPI Density ldpi 36*36 120 0.75 mdpi 48*48 160 1 hdpi 72*72 240 1.5 xhdpi 96*96 320 2 xxhdpi 144*144 480 3
0 0