Android event.getY()在api 10和api 16中返回不同的值

时间:2013-05-17 15:57:12

标签: android gridview motionevent

目前我正在尝试开发一款应用,其中屏幕的一半(上半部分)是一张图片,另一半(下半部分)是网格视图。 当我现在单击网格视图的其中一个图块时,我尝试使用event.getY()获得此单击的相对y坐标。在Android 2.3.3上我得到88 - 对我来说正确,我必须稍后使用这个值进行一些计算。但是在Android 4.0上它给了我一个大约576的值,在我看来好像它是触摸事件的绝对坐标......

有人可以解释这两个版本之间的这种差异吗?是否有解决方案来获取Android 4.0中的相对值?

1 个答案:

答案 0 :(得分:0)

你是如何测试的?我的4.2总是给我关于观点的坐标......

我认为可能是因为这两种设备具有不同的分辨率。由于2.3.3可能较旧,因此很可能具有较低分辨率的屏幕。尝试在两个相同的虚拟设备上进行测试(唯一的区别是android的版本)。您也可以尝试使用两种分辨率完全不同的2.3.3设备进行测试。

在实践中,我总是尝试在使用它们之前对坐标进行标准化(即event.getY()/view.getHeight())。这样您就不必担心解决问题了。

编辑:

如果你绝对无法获得相对坐标(我不知道为什么会这样,但无论如何......),你可以玩游戏并始终获取原始坐标并自己进行相对计算。即使用getRawX() / getRawY(),然后减去从View.getLocationOnScreen()和/或getLocationInWindow()获取的视图左上角的坐标。不是那么有效,而是一种有用的解决方法。