2017-07-01 62 views
0

在我的LG G柱花草h634,它具有(720×1280)的分辨率W/A尺寸为5.7英寸,258真正的PPI有了这个信息这款手机应该有:为什么我的android模拟器和我的android手机给了我不同的设备密度和DPI结果?

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,等等)这是正确的指标。我不确定为什么会发生这种情况,但是有谁能解释为什么仿真版本比真实设备更精确?

+2

没有您用来获取这些值的代码,很难解释它们。 – CommonsWare

+0

DisplayMetrics #xdpi #ydpi #density #densityDpi < - 这些是我用于模拟器和设备的唯一字段 – whompum

回答

1

但任何人都可以解释为什么模拟版本比真实设备更精确?

不是。该设备是该设备。


DisplayMetricsxdpiydpi是实际的物理密度值。例如,the documentation for xdpi has

X尺寸屏幕每英寸的确切物理像素。

在你的问题中,你说设备有“真实的PPI为258”。这符合您从DisplayMetrics获得的值,但要记住像素很少是正方形,所以xdpiydpi值很少完全相等。


density值是基于制造商设定(ro.sf.lcd_density in /system/build.prop,我认为)。为什么LG决定去xhdpi而不是hdpi,我不能说。如果我不得不猜测,他们认为现有的应用程序在逻辑密度上看起来更好。仿真器将使用自己的算法。另一家类似屏幕的制造商可能会选择hdpi(仿真器选择的是什么)。

densityDpi的值直接从density驱动。

+0

是关于繁忙编码指南中提供的多屏幕支持的所有信息?我正在寻找这方面信息的体面资源? – whompum

+0

@whompum:我没有深入了解DisplayMetrics,因为大多数应用程序都不需要它。如果你正在做一些类似渲染屏幕上的统治者那样的事情,那么'xdpi'和'ydpi'就很重要。通常通过资源集(例如'res/drawable-hdpi /')和维度(例如,测量'dp'中的东西,而不是'px')来处理'density'和'densityDpi',这比Java代码中的运行。我介绍了典型应用程序在处理不同屏幕尺寸和密度时需要考虑的战术和策略性内容。 – CommonsWare

2

它并不总是关于DPI和PPI。真正的手机配备了各种硬件组件。虽然真正的手机和模拟器的规格是相同的,但真正的手机呈现不同的东西,它也扩大了事物的不同。我的建议是尝试运行你的应用程序。在更少的物理设备上进行比较,并与仿真器进行比较,相同规格的结果相差不大。

+0

它似乎有太多的缺陷,以允许UI中的任何内容保持一致... – whompum

+3

@whompum如果您遵循传统你会好起来的......如果你想要那么精确的一致性,尽量在实时做所有事情。以编程方式获得屏幕尺寸并相应地管理事物......也可以使用约束布局等尝试其他方法...糟糕的布局也会影响UI,所以请记住 – GeekWithGlasses

+1

好吧,让我问你:只要我按照指导原则和缩放空格,我是否可以合理地认为我的UI将通过使用一些限定符适合任何SCREEN SIZE 360/450/600/720/800),还是这是一场不断的艰苦战斗? – whompum

相关问题