如果在布局xml文件中,我将大小设置为,例如12dip。这总是12dx的mdpi,所以18px的hdpi?
对于mdpi来说,dip总是如此,并且会因其他密度而相应地缩放吗?
答案 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因此它也被称为“密度”。