2010-12-23 89 views
6

如果在布局xml文件中将尺寸设置为例如12dip。那在mdpi中总是是12px,所以在hdpi中是18px?dip,px和dpi之间的关系

那么dip对mdpi总是正确的,并且会根据其他密度进行相应的缩放?

回答

11

该问题完全覆盖official documentation。 dip,px和dpi之间的关系覆盖了this部分。

引用:

密度独立像素(DP)

应用程序可以在定义他们的 UI使用,以表达布局尺寸或 位置的密度无关的方式

的虚拟像素单元。

密度无关的像素相当于一个 160 dpi屏幕上的一个物理象素,由所述平台(如本文档中描述 以后)假定基线密度 。在运行时, 平台透明地处理任何 缩放所需的DP单位,在屏幕的 使用的实际密度基于 。将dp单位转换为 屏幕像素很简单:像素= dps *(密度/ 160)。例如,在240 dpi屏幕上,1 dp将等于1.5物理像素数。使用DP单位 定义应用程序的UI强烈推荐 ,以此确保对不同 屏幕 UI的正确显示的方式。

所以声明:

总是在MDPI在华电国际

被12像素等18像素似乎是正确的,根据文档。

+0

据我所知,如果屏幕是160dip,12px在mdpi中只有12px。 mdpi是一个广泛的中等分辨率设备。 – CodyBugstein 2014-10-03 07:00:15

4

对于密度为160 dpi的设备,12dp将为12px。该文档并没有说所有的mdpi设备都有160 dpi的分辨率,所以看起来您可能会发现其他密度(例如150或180 dpi)的mdpi设备。在这些情况下,关系1dp = 1px不会成立。

你才能确定这种关系:

px = dp * (dpi/160) 

如果一台设备的320个dpi的密度则每个DP对应于2像素,因为一百六十零分之三百二十零为2。我要说的是2 “密度因子”,但它也是你用getResources().getDisplayMetrics().density得到的,所以它也被称为“密度”。