在我的 Lg G stylo h634 上,它的分辨率为 (720*1280(,尺寸为 5.7 英寸,实际 PPI 为 258。有了这些信息,这款手机应该有:
DP width: 240
DP height: 240
Density: 1.5
Density PPI: 240
但是,当我在这个真实设备上运行测试时,它给了我:
DP width: 257
DP height: 258
Density: 2.0
Density PPI: 320
现在,当我运行具有相同规格的手机的模拟版本时,会给出第一个指标(密度:1.5,PPI:240等(,这是正确的指标。我不确定为什么会发生这种情况,但任何人都可以解释为什么模拟版本比真实设备更准确吗?
它并不总是关于DPI和PPI。真正的手机带有各种硬件组件。虽然真实手机和模拟器的规格是相同的,但真正的手机呈现的东西不同,它的规模也不同。我的建议是尝试在更多的物理设备上运行您的应用程序,并与模拟器进行比较,等效规格的结果不会有太大差异。
但是谁能解释为什么模拟版本比真实设备更准确?
不是。设备就是设备。
在DisplayMetrics
,xdpi
和ydpi
是实际的物理密度值。例如,xdpi
的文档具有:
X 维度中每英寸屏幕的确切物理像素。
在您的问题中,您指出该设备的"实际 PPI 为 258"。这符合您从DisplayMetrics
获得的值,请记住像素很少是方形的,因此xdpi
值和ydpi
值很少完全相同。
density
的值基于制造商设置(我认为ro.sf.lcd_density
/system/build.prop
(。为什么LG决定选择xhdpi
而不是hdpi
,我不能说。如果我不得不猜测,他们认为现有的应用程序在具有这种逻辑密度的设备上看起来更好。模拟器将使用自己的算法。具有类似屏幕的其他制造商可能会选择hdpi
(模拟器选择的内容(。
densityDpi
的值直接从density
驱动。