您正在使用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,以便自动设置大小。
以下是为保留真实设备比例而缩放的图像:
如您所见,圆圈具有相同的物理大小,操作栏、图标和状态栏也是如此。