我们为什么使用dp? 为什么在已经有其他密度独立单位(如cm)的情况下创建dp? Android系统的dp到px转换是基于桶而不是确切的设备像素密度吗?这会不会导致不同设备屏幕上的物理空间元素测量值出现差异?

我们为什么使用dp? 为什么在已经有其他密度独立单位(如cm)的情况下创建dp? Android系统的dp到px转换是基于桶而不是确切的设备像素密度吗?这会不会导致不同设备屏幕上的物理空间元素测量值出现差异?,android,Android,因为厘米太大了。你必须用浮子工作,这意味着你需要一直工作。他们想要小一点的。此外,最早的设备是160 dpi,do 1dp=1px,这在当时很方便,现在很少有设备在mdpi上发货,所以这一优势已经消失。它也恰好与iphone的dpi匹配,四舍五入到最接近的10。iphone的dpi是163,所以测量值就是移动开发者用来轻松转换的 它基于物理维度。可能会有一些差异,但实际上并没有。如果你有一个图像太小了一点,你从拉伸这个微小的图像中得到的失真量可以忽略不计。dp的另一个主要用途是填充,只要在单个设

因为厘米太大了。你必须用浮子工作,这意味着你需要一直工作。他们想要小一点的。此外,最早的设备是160 dpi,do 1dp=1px,这在当时很方便,现在很少有设备在mdpi上发货,所以这一优势已经消失。它也恰好与iphone的dpi匹配,四舍五入到最接近的10。iphone的dpi是163,所以测量值就是移动开发者用来轻松转换的

它基于物理维度。可能会有一些差异,但实际上并没有。如果你有一个图像太小了一点,你从拉伸这个微小的图像中得到的失真量可以忽略不计。dp的另一个主要用途是填充,只要在单个设备上保持一致,轻微的舍入误差是不可察觉的

正如@Gabe Sechan所说,cm甚至mm都太大了。与厘米相反,像素的转换是基于密度类别,而不是屏幕的精确密度,这避免了厘米到像素因子为1.5x、2x、3x等时的舍入问题,舍入效果比任意ppi好得多。 对dp到px的转换基于密度桶。屏幕属于mdpi、hdpi、xhdpi等,而不是确切的物理ppi。应用程序的位图图形按桶分类,因此为了测量一致性,dp根据密度桶而不是实际ppi进行转换。缺点是,与cm等单位不同,测量值不能保证每个屏幕上的物理尺寸相同。 参考资料:


欢迎来到SO。找到答案的最佳方法是在演示应用程序中自己实现它们。这样的问题不应该张贴在SO上。