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

  • Post author:
  • Post category:其他


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



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