dip,px和dpi之间的关系

Esp*_*pen 7 layout android resolution

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

那么对于mdpi,dip总是如此,并且会相应地针对其他密度进行缩放吗?

Kon*_*rov 12

官方文件完全涵盖了这个问题.dip,px和dpi之间的关系由节涵盖.

引用:

密度无关像素(dp)

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

与密度无关的像素相当于160 dpi屏幕上的一个物理像素,即平台假设的基线密度(如本文档后面所述).在运行时,平台根据所使用的屏幕的实际密度透明地处理所需的dp单元的任何缩放.dp单位到屏幕像素的转换很简单:像素= dps*(密度/ 160).例如,在240 dpi屏幕上,1 dp将等于1.5个物理像素.强烈建议使用dp单位来定义应用程序的UI,以确保在不同屏幕上正确显示UI.

声明如下:

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

根据文件,似乎是正确的.


Fer*_*nch 5

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

你只能确定这种关系:

px = dp * (dpi / 160)
Run Code Online (Sandbox Code Playgroud)

如果一个设备的密度为320 dpi,那么每个dp对应2 px,因为320/160是2.我会说2是"密度因子",但它也是你得到的getResources().getDisplayMetrics().density,所以它也被称为"密度".