一般在布局上设置控件大小维度的单位采用dp,而定义字体大小的单位采用sp。
dp是dip,density independent pixel,即密度无关的像素单位,说白了,就是这个维度相对于不同屏幕的显示效果一致。
在Android系统中定义的dp,sp单位都是为了解决Android设备不同屏幕的差异而进行的封装,物理上的屏幕仍然是基于像素的。
如果在运行的手机上截屏下来到手机上看,不管在手机还是平板上,如果分辨率相同,截屏后的图片分辨率就是一样的,如果是相同的应用界面,理论上截屏后的图片效果应该基本一致。
关于dp:
在屏幕上显示任何控件,图片,文字,最终都必须转化为像素单位进行绘制,因为屏幕驱动最终是以像素为单位进行绘制的(行扫描,或整屏幕,取决于驱动)。
举例来说:
如果一个800x1600的密度为320的手机上显示一个100x100的像素的Button,并且左右居中。
同时,在同样的分辨率的,密度为160的平板上显示该Button,并且左右剧中。
我们同时拿着这2个设备去看这个界面的时候,应该需要达到整体位置,比例都一致的感觉。
在手机上因为密度是320,我们应该是显示50dpx50dp的Button控件,在运行时会换算为100px *100px的尺寸,可以达到我们的UI效果。
在平板上为了达到相同的效果,我们希望在程序设计时定义的尺寸dp,在运行时应该能换算为100px * 1