2013-01-16 85 views
-2

按照android doc的说法:“将dp单位转换为屏幕像素很简单:px = dp * (dpi/160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。Android px VS dp

我对这个例子有点困惑。根据公式,px=(240/160)dp => px = 1.5dp 它怎么会变成“在240 dpi的屏幕上,1dp等于1.5个物理像素。”?它应该说1 px等于1.5 dp。请让我清楚。

+1

[这里是] [1]你正在寻找的答案。希望这会帮助你。 [1]:http://stackoverflow.com/questions/2025282/difference-of-px-dp-dip-and-sp-in-android – amDroid

+0

我已经通过您所提供的网址了,仍不清楚。 –

回答

2

密度越高,物理像素越小。因此,为了保持dp的度量大小保持不变,1dp以更高的密度请求更多的物理像素,因为它们更小。

dp的官方标准化为1dp = 1px,密度为160dpi;因此,在240dpi的密度下(这比50%大),为了保持用dp表示的度量保持相同的长度,您需要多出50%的物理像素。

1

Android为不同屏幕密度的设备定义密度比。对于mdpi设备,此比率设置为1.因此,如果将宽度指定为1dp,则android会通过将dp值与密度比相乘来计算像素值,即对于mdpi设备,px = 1(dp)* 1(ratio)= 1px 。

但是在像xhdpi设备这样的高密度设备上,比例为2,并且android会通过将dp值与密度比值相乘来将dp转换为像素。 px = 1(dp)* 2(比率)= 2px。 因此,您在xhpi设备上的元素将为2px。

更多信息可以在这里找到:http://www.jtechniques.com/android/android-basics/understanding-dp-in-android-ui-px-vs-dp