全面理解Android中的Px,DPI,DIP,Density,Sp等概念

Px

Pixel,像素。不同设备显示效果相同,这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px。也正是因为如此才造成了UI在小分辨率设备上被放大而失真,在大分辨率上被缩小。

Screen Size

表示屏幕尺寸。一般所说的手机屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的对角线的长度,而不是手机面积。我们可以根据勾股定理获取手机的宽和长,当然还有面积。

Resolution

表示分辨率。指手机屏幕垂直和水平方向上的像素个数。

比如分辨率480*320指设备垂直方向有480个像素点,水平方向有320个像素点。

DPI

dots per inch,像素密度,即屏幕每英寸所包含的像素数

例如QVGA(320*240)分辨率的屏幕物理尺寸是2英寸*1.5英寸,它的DPI为160dpi

Density

表示密度,没有没单位,就是一个比例值,也可以叫缩放系数,值为DPI/160。常见取值 1.0 , 1.5 ,2,3。

DIP

Density-independent pixel,与设备无关的像素。Px= DIP * (DPI / 160)

使用DIP可以使不同设备上显示的物理尺存大致一样

为什么是大致一样呢?因为我们平时所说的DPI:120(low)、160(medium)、240(high)、 320(xhigh),只是一个大概值。比如实际设备的DPI可能是243dp,但是根据标准,就被归为240dp了,也就是就近取了一个标准值

Sp

Scale-independent Pixels,缩放独立像素,用于字体显示。关于Sp, 官方文档的描述是这样的:

Scale-independent Pixels – This is like the dp unit, but it is also scaled by the user’s font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user’s preference.

大致的意思是:Sp除了受屏幕密度影响外,还受到用户的字体大小影响(我们可以进入系统设置中修改字体大小)。通常情况下,建议使用Sp来跟随用户字体大小设置。

参考:
1.Android中px dpi dip density densityDpi 的相关说明
2.android中的dp,px深度解析
3.两分钟理解Android中SP与DP的区别

猜你喜欢

转载自blog.csdn.net/sted_zxz/article/details/78273633