通过处理一个视图项的触摸事件,我无法从屏幕上获取真实的 (x,y)。
我有这个:
当我触摸 View 项目时,它会给我与位于他左上角的原点的坐标,如果我将手指滑出视图,它会给我负坐标(向上或向左滑动时)。
我想获取屏幕中的 View 位置,将其添加到我得到的 (x,y) 坐标中,所以最终结果是 (0,0) 在整个屏幕的左上角.
我还需要总屏幕尺寸,以便我知道手指何时位于右下角。
我怎样才能做到这一点?
谢谢。
通过处理一个视图项的触摸事件,我无法从屏幕上获取真实的 (x,y)。
我有这个:
当我触摸 View 项目时,它会给我与位于他左上角的原点的坐标,如果我将手指滑出视图,它会给我负坐标(向上或向左滑动时)。
我想获取屏幕中的 View 位置,将其添加到我得到的 (x,y) 坐标中,所以最终结果是 (0,0) 在整个屏幕的左上角.
我还需要总屏幕尺寸,以便我知道手指何时位于右下角。
我怎样才能做到这一点?
谢谢。
getX()
正如您所发现的,MotionEvent 类具有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
' 在屏幕上的位置,然后您可以使用简单的算术计算其余部分。
如何获取视图的绝对坐标