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

16

我在处理一个视图项的触摸事件时,遇到了从屏幕获取实际 (x,y) 坐标的问题。

我有以下内容:

图片描述

当我触摸视图项时,它会给我相对于其左上角的坐标,如果我将手指滑出视图,则会给我负坐标(向上或向左滑动)。 图片描述 图片描述

我想获取视图在屏幕中的位置,以将其添加到获取的 (x,y) 坐标中,使最终结果是 (0,0) 位于整个屏幕的左上角。 图片描述

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

我该如何实现这一点?

谢谢。

3个回答

16

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

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

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

听起来这就是你想要的。


这是最简单的方法,感谢您的答案。 - Alex

6
在屏幕加载后尝试使用此功能。
int[] location = new int[2];
View.getLocationOnScreen(location); 
Log.v(Common.TAG,"left: "+ location[0]);
Log.v(Common.TAG,"top: "+ location[1]);

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接