4

在 Eclipse 的 AVD 中,我创建了两个相同的设备,除了它们的密度值。设备 1 有abstracted LCD density240 个;设备 2 有 160。两者的分辨率都是 480x800。

有人可以向我解释为什么设备 1 屏幕上的元素看起来“更大”吗?由于它们具有相同的分辨率,它们不应该显示相同数量的像素吗?如果有的话,由于设备 1 具有更高的密度,它不应该显示更多的细节/屏幕空间吗?

设备 1

Device_1_Screenshot

设备 2

Device_2_Screenshot

截图 - (点击查看更大的变体)

如上所示,我在两个设备上的随机屏幕位置绘制了一个半径为 15dp 的圆。设备 2 上的圆圈肯定更小,操作栏也是如此。为什么是这样?

4

1 回答 1

8

您正在使用dp绘制,而不是物理像素。dp尝试从物理尺寸中抽象出来,给用户一个物理尺寸相同的 GUI 元素。因此,如果一个设备上的像素较小,您需要使用更多的物理像素来获得与具有较大像素的设备上相同的效果。

所以:800 像素/每英寸 240 像素 = 3 1/3 英寸(该屏幕尺寸的物理长度)。一个像素的大小:1 像素/每英寸 240 像素 = 0,004 英寸。800 像素/每英寸 160 像素 = 5 英寸。一个像素的大小:1 像素/每英寸 160 像素 = 0,006 英寸。

因此,在相同的分辨率(像素数)下,低密度设备中的像素明显更大(每个维度大约大 50%)。所以你需要更少的物理像素来绘制圆圈以显示 15 dp 的圆圈。

简单地说:低dpi意味着更大的像素。相同的分辨率(像素数)意味着较低 dpi 的设备具有更大的屏幕。

因此,在物理设备上,这些圆圈在不同尺寸的设备上具有相同的物理尺寸。但是您的模拟器窗口具有相同的大小,出于速度原因,一个物理像素映射到您计算机屏幕上的一个物理像素。因此,您在低 dpi 设备上使用的像素较少,但使用相同大小的物理像素绘制它们。解决方案:您需要调整模拟器窗口的大小,使其与实际大小相匹配。我只是无法访问我的 Android SDK 安装,但 IIRC 您可以在 AVD 启动选项中设置(计算机)屏幕 dpi,以便自动设置大小。

以下是为保留真实设备比例而缩放的图像:

160 dpi 设备 240 dpi 设备

如您所见,圆圈具有相同的物理大小,操作栏、图标和状态栏也是如此。

于 2012-11-19T15:41:10.553 回答