16

通过处理一个视图项的触摸事件,我无法从屏幕上获取真实的 (x,y)。

我有这个:

在此处输入图像描述

当我触摸 View 项目时,它会给我与位于他左上角的原点的坐标,如果我将手指滑出视图,它会给我负坐标(向上或向左滑动时)。 在此处输入图像描述 在此处输入图像描述

我想获取屏幕中的 View 位置,将其添加到我得到的 (x,y) 坐标中,所以最终结果是 (0,0) 在整个屏幕的左上角. 在此处输入图像描述

我还需要总屏幕尺寸,以便我知道手指何时位于右下角。

我怎样才能做到这一点?

谢谢。

4

3 回答 3

16

getX()正如您所发现的,MotionEvent 类具有getY()返回相对于视图的坐标的方法。

然而,它也有getRawX()getRawY()方法,根据文档说:

返回此事件的原始原始 X(或 Y)坐标。对于屏幕上的触摸事件,这是屏幕上事件的原始位置,在它为包含窗口和视图进行调整之前。

听起来这就是你所追求的。

于 2012-08-06T16:41:34.403 回答
6

在屏幕上加载视图后尝试使用它。

int[] location = new int[2];
View.getLocationOnScreen(location); 
Log.v(Common.TAG,"left: "+ location[0]);
Log.v(Common.TAG,"top: "+ location[1]);
于 2013-04-17T13:41:48.173 回答
0

获取View' 在屏幕上的位置,然后您可以使用简单的算术计算其余部分。 如何获取视图的绝对坐标

于 2012-08-06T16:37:24.187 回答