如果在布局xml文件中,我将大小设置为,例如12dip。在mdpi中总是12px,在hdpi中总是18px吗?
那么,对于mdpi来说,dip总是正确的吗?对于其他密度,dip是否会相应地进行扩展?
发布于 2010-12-23 17:40:02
这个问题在official documentation中得到了充分的报道。this剖面涵盖了dip、px和dpi之间的关系。
引用:
密度无关像素(dp)
一种虚拟像素单元,应用程序可以使用它来定义其UI,以独立于密度的方式表示布局尺寸或位置。
与密度无关的像素相当于160 dpi屏幕上的一个物理像素,即平台假定的基线密度(如本文后面所述)。在运行时,该平台根据使用中屏幕的实际密度,透明地处理所需dp单元的任何缩放。将dp单位转换为屏幕像素很简单:像素= dps *(密度/ 160)。例如,在240 dpi屏幕上,1个dp等于1.5个物理像素。强烈建议使用dp单元来定义应用程序的UI,以确保您的UI在不同的屏幕上正确显示。
所以这句话:
mdpi中始终为12px,hdpi中始终为18px的
看起来是对的,根据文件。
发布于 2014-05-16 04:32:41
在密度为160 dpi的设备上,12dp将是12px。文档并没有说所有的mdpi设备都有160dpi,所以你可能会找到其他密度(例如150或180dpi)的mdpi设备。在这些情况下,关系1dp = 1px不会是真的。
您只能确定此关系:
px = dp * (dpi / 160)如果设备的密度为320dpi,则每个dp对应于2px,因为320/160是2。我想说2是“密度因子”,但它也是您使用getResources().getDisplayMetrics().density获得的,因此也称为“密度”。
https://stackoverflow.com/questions/4517289
复制相似问题