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

时间:2012-08-06 16:33:49

标签: android screen coordinates android-view

通过处理一个查看项目的触摸事件,我在屏幕上获取真实(x,y)时遇到了一些麻烦。

我有这个:

enter image description here

当我触摸View项时,它会给我坐标位于左上角的原点,如果我将手指滑出视图,它会给我负坐标(向上或向左滑动时)。 enter image description here enter image description here

我想在屏幕上获取View位置,将其添加到我得到的(x,y)坐标,所以最终的结果是(0,0)位于屏幕的左上角整个屏幕。 enter image description here

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

我怎样才能做到这一点?

感谢。

3 个答案:

答案 0 :(得分:16)

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

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

  

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

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:0)

在屏幕上获取View的位置,然后您可以使用简单的算术计算其余部分。  How to get the absolute coordinates of a view