在Eclipse的AVD中,我创建了两个除密度值外相同的设备。设备1的abstracted LCD density
为240;设备2具有160.两者的分辨率为480x800。
有人可以向我解释为什么设备1屏幕上的元素看起来“更大”吗?由于它们具有相同的分辨率,它们不应该显示相同数量的像素吗?如果有的话,因为设备1具有更高的密度,是否应该显示更多详细信息/屏幕空间?
设备1
设备2
Screeshots - (点击查看大图)
如上所示,我在两个设备上的随机屏幕位置绘制一个半径为15dp的圆。设备2上的圆圈肯定更小,操作栏也是如此。这是为什么?
答案 0 :(得分:8)
您使用 dp 绘图,而非物理像素。 dp 尝试从物理大小中抽象出来,并为用户提供相同物理大小的GUI元素。因此,如果一个设备上的像素较小,则需要使用更多物理像素来获得与具有更大像素的设备相同的效果。
所以: 每英寸800像素/ 240像素= 3 1/3英寸(该屏幕尺寸的物理长度)。一个像素的大小:1像素/ 240英寸每英寸= 0.004英寸。 每英寸800像素/ 160像素= 5英寸。一个像素的大小:1像素/每英寸160像素= 0.006英寸。
因此,使用相同的分辨率(像素数),较低密度设备中的像素显着更大(每个维度大约50%)。因此,您需要 less 物理像素来绘制圆圈以显示15 dp的圆圈。
简单地说:低dpi意味着更大的像素。相同的分辨率(像素数)意味着较低的dpi设备具有更大的屏幕。
因此,在物理设备上,这些圆圈在具有不同大小的设备上具有相同的物理尺寸。但是,您的仿真器窗口具有相同的大小,出于速度原因,一个物理像素映射到计算机屏幕上的一个物理像素。因此,您在低dpi设备上使用 less 像素,但使用相同大小的物理像素绘制它们。解决方案:您需要调整模拟器窗口的大小,使其与 real 大小匹配。我只是无法访问我的Android SDK安装,但IIRC你可以在AVD启动选项中设置(计算机)屏幕dpi,这样就可以自动设置大小。
以下是缩放图像以保留真实设备的比例:
正如您所看到的,圆圈具有相同的物理尺寸,操作栏,图标和状态栏也是如此。