天天看点

dp,dpi,px,pt,sp

众所周知Android屏幕碎片化比较严重,所以才出现的这么些的东西。先来了解下这些概念。

1.屏幕大小。屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位。我们常说的5.0,6.0的屏幕就是这个意思。

2. Px(pixels)像素,定义了多少个实际的点。横着多少个像素点竖着多少个像素点。

3.分辩率,有了px和屏幕的概念也就有了分辨率的概念。买手机说多480×880这样的多少像素乘以多少像素。这就是分辩率。

4.Dpi(Dots Per Inch):屏幕像素密度,一个单位长度(1英寸)里面多少个点,切记这里的点不是说的像素。同样的宽度可能分配的像素点数目不同,各家厂商生产的手机屏幕的像素密度是不一样的。说明下:手机屏幕尺寸大小和屏幕的清晰度,细腻程度是没有半毛钱关系的。讲道理的说,屏幕的为4寸的。但是他的分辨率很低就是说在横向和纵向的点很少肯定是不清晰的。4寸若分辨率是480*880的,肯定是没有4寸的960*1760的清晰的。看下图就会明白了。

dp,dpi,px,pt,sp

这里要说明的是这个密度分为系统密度和手机实际密度。实际密度就是我们可以算出来的。就是对角线的分布的像素点的个数。系统密度我们的as生成资源目录的时候就有了120(ldpi)、160(mdpi)、240(hdpi)、320(xhdpi)、480(xxhdpi)我们的android的在获取dpi的时候获取的都是系统dpi和找和实际数值最接近的dpi返回。

5.ppi(Pixel per inch) 每英寸像素数,由于上面说了dpi顺便说下ppi。从名字就可以看出来一个是说的一英寸多少个点,一个是说的一英寸多少个像素。ppi表示显示设备的点密度,dpi表示印刷品点密度。一个Pixel可能由很多个物理Dot组成。通常情况下可以混着用同一个概念和意思,但是在iOS的retina屏幕就是多个物理的点代表一个像素。这个区别可以百度上找找资料了解下。

6.dip(device independent pixels)设备独立像素,为了和sp统一我们常常写作dp。前面的都理解好了这个就可以理解了。这个和我们的屏幕的像素密度dpi有关。google规定在160dpi的情况下1dp=1px,这样的话在320dpi下肯定就是1dp=2px这样的换算。在我们android 目录里面有有ldpi,mdpi,hdpi,xhdpi ,xxhdpi上面已经说过了的。附上一张图片

dp,dpi,px,pt,sp

因为屏幕分辨率dpi等规格实在是太多了我们肯定不能为不同屏幕的密度为每一款手机单独开发一套ui。所以用公式 px=dp*(ppi/160)计算在不同屏幕上的像素 数。

在以前的开发中通常写的都是一个控件多少个像素的宽高,A和B的距离是多少个px,但是在dpi高的屏幕的话控件就会显得很小。一个button宽度为2px我们在同样尺寸的手机上。160dpi下的话会和320dpi下的手机显示的宽度是不一样的。在320dpi毫无疑问实际的物理距离会是160dpi下的一半给一张对比图你们就明白了。

dp,dpi,px,pt,sp

正是因为如此android才提倡用dp做单位,这样的话可以保证显示的效果是一样的,会给不同dpi的的手机屏幕自动转换成相应的px来渲染,让控件看起来差不多大。

7.pt (point,点)印刷行业常用单位,等于1/72英寸。这个概念主要是设置字体的,通常我们不会选这个作为单位。通过上面的这些概念这个就和px是差不多的意思。

8.sp(scale-independentpixel)当你在系统设置里调节字号大小时,应用中的文字也会随之变大变小。当文字尺寸是“正常”时1sp=1dp。这个就和我们上面说的dp差不多的意思。

这节大家先明白这几个概念下节将讲如何通过ui给的图适配,通常做ui开发的一些建议,资源文件怎么放在目录下好点。大家要有什么不明白的欢迎留言,然后或者还有什么遗漏了的想了解的我会在后面的文章给大家补充。

欢迎大家关注微信公共号给大家分享更多的原创文章。

dp,dpi,px,pt,sp