我在处理一个视图项的触摸事件时,遇到了从屏幕获取实际 (x,y) 坐标的问题。
我有以下内容:
当我触摸视图项时,它会给我相对于其左上角的坐标,如果我将手指滑出视图,则会给我负坐标(向上或向左滑动)。
我想获取视图在屏幕中的位置,以将其添加到获取的 (x,y) 坐标中,使最终结果是 (0,0) 位于整个屏幕的左上角。
我还需要知道总屏幕大小,以便我知道手指是否位于右下角。
我该如何实现这一点?
谢谢。
我在处理一个视图项的触摸事件时,遇到了从屏幕获取实际 (x,y) 坐标的问题。
我有以下内容:
当我触摸视图项时,它会给我相对于其左上角的坐标,如果我将手指滑出视图,则会给我负坐标(向上或向左滑动)。
我想获取视图在屏幕中的位置,以将其添加到获取的 (x,y) 坐标中,使最终结果是 (0,0) 位于整个屏幕的左上角。
我还需要知道总屏幕大小,以便我知道手指是否位于右下角。
我该如何实现这一点?
谢谢。
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]);