Android DisplayMetrics设备之间不一致

时间:2014-09-10 12:55:21

标签: android unity3d touch dpi

我正在尝试在我的统一游戏中使用DPI和触摸输入来识别不同大小的Android设备上的手势。

例如,我希望我的虚拟拇指操纵杆从“全左”到“全右”两英寸。鉴于屏幕的DPI,我可以将触摸从像素转换为英寸,如下所示:inchesFromStickCenter = pixelsFromStickCenter/dpi

要获得DPI,unity提供Screen.dpi,但我在各设备上获得的结果不一致。有时拇指杆太大了,有时候太小了。相反,我直接进入Android的DisplayMetrics,在那里我可以获得xdpiydpidensityDpi。从这个问题Difference between the declared size in inches and the size obtained using DisplayMetrics我看到densityDpi是一个舍入值,我应该使用xdpi或ydpi。

我通过尝试以英寸计算屏幕宽度来测试事物(我的是风景,所有这些示例都假定为风景)。当我在第一代N7上将屏幕像素宽度(1280)除以xdpi(195.4)时,它高估了屏幕宽度半英寸(6.55英寸,相比之下,当用规则测量时,不到6英寸)。当我除以densityDpi(213)时,这是一个更好的答案。 N7的维基百科页面说dpi是215,这也会给出一个很好的答案。

当我在我的Galaxy S2上测试时,xdpi(217)给出了一个很好的屏幕尺寸估计值,而DensDpi(240)则低估了三分之一英寸。

所以我不能依赖这些数字中的任何一个!为什么N7 stat都不像维基百科页面?这是一种尝试将像素转换为真实世界英寸的愚蠢方式吗?我应该做什么呢?

干杯!

0 个答案:

没有答案