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

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理解为一个固定的物理长度。

分辨率尺寸dpidpdensity
320*4802X3 inch1601601
480*8002X3 inch480/2=2401601.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 项目不同文件夹的设置:

文件SizeDPIDensity
ldpi36*361200.75
mdpi48*481601
hdpi72*722401.5
xhdpi96*963202
xxhdpi144*1444803

版权声明:本文为Cris_Ma原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。