繁体   English   中英

将getX()和getY()的值用于不同分辨率的设备(相对比例)

[英]Using values from getX() and getY() for different resolution devices (relative scale)

在过去的一个小时中,我已经在该主题上进行了一些探索,并且发现了一些有希望的结果,但是没有一个人完成了我需要他们做的事情。 差不多,我使用XY坐标触发声音,效果很好。 可以说我想将屏幕分成8个正方形,并让每个正方形触发不同的声音。 除了一个主要问题外,我可以很轻松地做到这一点。 如果我在仿真器中使用X和Y值(800x440像素),然后在EVO 3D上使用相同的程序(我相信是960x540),则整个过程实质上是毁了的,因为我有一部分我的屏幕正在使用,而不是整个屏幕。 有没有办法使用类似于密度像素的东西代替touchEvents的真实X和Y值? 这样,一切都会针对每个特定设备进行扩展。 我试过使用getRawX()/ Y,这似乎根本没有改变任何东西。 它仍然适用于每个设备,而不是相对比例。 谁能指导我解决此问题的方法? 非常感谢,谢谢!

编辑:我想通了,这要归功于小鼠的一些简单建议。 这是我为那些想知道的人所做的事情:

    x = e.getX();
    y = e.getY();       
    DisplayMetrics gettotalY = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(gettotalY);       
    toty = gettotaly.heightPixels;
    ym1 = (float) (toty * 0.5);     

我在这里看不到问题。 MotionEvent.getX / Y返回相对于应用程序窗口的左上角/左上角的像素值,直至其大小。 getRawX / Y还返回像素值,但相对于整个屏幕。

然后由您决定如何使用此像素值。 例如,将其除以窗口的宽度/高度,在任何屏幕分辨率下,您都可以得到0-1范围内的浮点值。 或做其他数学运算。

那只是简单的计算,而DPI在这里不起作用。 但这取决于您应该在何处绘制(如果您要绘制)图形用户应该触摸屏的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM