如何获得对应于整个屏幕的屏幕坐标,而不是触摸的视图?

我有一些麻烦通过处理一个查看项目的触摸事件从我的屏幕获得真正的(x,y)。

我有这个:

在这里输入图像说明

当我触摸查看项目,它给了我坐标在他的左上angular的原点,如果我的手指滑出视图,它给我负的坐标(向上或向左滑动时)。 在这里输入图像说明在这里输入图像说明

我想获得屏幕上的视图位置,将其添加到我得到的(x,y)坐标,所以最终的结果是(0,0)在整个屏幕的左上angular。 在这里输入图像说明

我也需要整个屏幕的大小,以便我知道什么时候手指位于右下angular。

我怎样才能做到这一点?

谢谢。

Solutions Collecting From Web of "如何获得对应于整个屏幕的屏幕坐标,而不是触摸的视图?"

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

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

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

听起来像这是你以后。

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

 int[] location = new int[2]; View.getLocationOnScreen(location); Log.v(Common.TAG,"left: "+ location[0]); Log.v(Common.TAG,"top: "+ location[1]); 

在屏幕上获取View的位置,然后使用简单的算术计算剩余的位置。 如何获得视图的绝对坐标