在Android系统开发过程中需要对各种各样的手机版本进行适配,而编写布局文件时希望可以使用相同的布局元素以及空间距离,实现在不同尺寸的屏幕上显示的效果一致。
手机屏幕的像素密度取决于不同的手机本身,与手机的尺寸以及像素值有关。与手机无关“像素”以及可缩放的“像素”可以提供灵活方式在不同的手机上进行适配
每一英寸(2.54厘米)像素点的数目被定义为像素密度,高分辨率的手机比低分辨率的手机在单位英寸上有更多的像素点。
计算像素密度公式:像素密度=屏幕高(宽)的像素点个数/屏幕高(宽)英寸
当使用同一像素尺寸来表示UI元素,在高分辨率的手机上显示的会比在低分辨率的手机上显示“小”,如上图所示,因此在布局文件中不可以使用像素值pix来表示布局元素的大小以及位置等。
Density无关性指的是UI元素在屏幕上显示的是同一种样式,但使用的是不同的Density,即不同手机有不同的Density,但使用相同的Density的值可以显示为相同的大小,如下图所示。
Density无关性,在布局文件中使用dp来表示多种手机的不同Density。
在开发Android应用时,使用dp使得布局元素在不同像素密度的手机上显示为相同的布局的大小。
官方给的dp的计算方式 :dp=(水平方向的像素点*160)/屏幕密度
实际计算方式可以用:dp=屏幕宽度*160
屏幕宽度(in) | 屏幕密度 | 屏幕宽度(px) | 屏幕宽度(dp) |
---|---|---|---|
1.5in | 120 | 180px | 240dp |
1.5in | 160 | 240px | 240dp |
1.5in | 240 | 360px | 240dp |
sp和dp有着相同的功能,但是sp是应用于文字中的,sp的默认的值与dp的默认值是相同的。sp和dp的本质的区别在于,sp会受到用户手机字体的限制。当用户将自己手机字号设置为larger时,手机APP使用sp设置的字号将会自动匹配用户的字号设置。
作者:吴有唯
原文链接:点击这里
转载请标明出处:对于Android Density 的理解(dp sp pix)