1、前言
在Android中有一个专门用来讲解这些尺寸单位的指导。参考官网Dimension 。
2、尺寸(dimension)
10px,2in,5sp等等带有单位的就是尺寸资源,Android中支持如下的用来测量长度的尺寸资源:dp、sp、pt、px、mm和in。
dp (Density-independent Pixels)与密度无关的像素,基于屏幕密度的抽象单位。在每英寸160个点的屏幕上,1dp与1px大致相等。当运行在更高/更低密度的屏幕上,1dp中的像素数根据屏幕的dpi(dots per inch)数而按比例决定。这个dp与(pixel)像素比例根据屏幕密度而变化。使用dp单位(而不是px单位) 是一个简单的解决方法,使我们的布局能自适应不同的屏幕密度,在不同的设备间能保持一致的展示真实的UI元素的尺寸。
sp (Scale-independent Pixels)与刻度无关的像素,与dp类似,建议使用sp来用于用户的字体,这样也可以根据屏幕密度和用户的字体大小设置来调整。
pt (Points )是1/72 in(英寸)。
px (Pixels )是像素,屏幕上的真实像素,在真实环境中,使用不同的设备显示时,不建议使用。不同的设备显示效果不同。
mm (Millimeters)是毫米
in (Inches)是英寸(Inches,1英寸=25.4毫米)
以上涉及到2个专业的术语:“与密度无关”的像素,“与刻度无关”的像素。这个应该是和位图和矢量图有关吧(不太懂。O 。)。
3、到底改用哪个单位呢?
其实2中已经说明了各单位应该使用的场景了。因为现在的显示器支持不同的分辨率,所以为了在不同的分辨率上显示达到一致的效果从而就有了dp和sp两个单位了。
总结: 表示字体的大小的时候使用sp为单位,其他情况都是用dp作为单位。
4、dp与px的转换,sp和px的转换
这个根据显示器的分辨率来做相关的转换即可。