dip,px和dpi之间的关系

时间:2010-12-23 09:14:01

标签: android layout resolution

如果在布局xml文件中,我将大小设置为,例如12dip。这总是12dx的mdpi,所以18px的hdpi?

对于mdpi来说,dip总是如此,并且会因其他密度而相应地缩放吗?

2 个答案:

答案 0 :(得分:12)

official documentation完全涵盖了这个问题。 dip,px和dpi之间的关系由this部分涵盖。

引用:

  

与密度无关的像素(dp)

     

应用程序可用于定义其的虚拟像素单元   用户界面,表达布局尺寸或   以与密度无关的方式定位。

     

与密度无关的像素相当于a上的一个物理像素   160 dpi屏幕,基线密度   由平台承担(如上所述)   稍后在本文件中)。在运行时,   平台透明地处理任何   基于所需的dp单位的缩放   关于屏幕的实际密度   使用。将dp单位转换为   屏幕像素很简单:pixels = dps   *(密度/ 160)。例如,在240 dpi屏幕上,1 dp将等于1.5   物理像素。使用dp单位   定义您的应用程序的UI是非常高的   建议,作为一种确保方式   在不同的UI上正确显示您的UI   屏幕。

所以声明:

  

总是12dx的mdpi,所以18px的hdpi

根据文档,

似乎是正确的。

答案 1 :(得分:5)

12dp在密度为160 dpi的设备上为12px。文档并未说明所有mdpi设备都有160 dpi,因此您可能会发现mdpi设备具有其他密度(例如150或180 dpi)。在这些情况下,关系1dp = 1px不会成立。

你只能确定这种关系:

px = dp * (dpi / 160)

如果设备的密度为320 dpi,那么每个dp对应2 px,因为320/160是2.我会说2是“密度因子”,但它也是你得到的{{1因此它也被称为“密度”。