通过处理一个查看项目的触摸事件,我在屏幕上获取真实(x,y)时遇到了一些麻烦。
我有这个:
当我触摸View项时,它会给我坐标位于左上角的原点,如果我将手指滑出视图,它会给我负坐标(向上或向左滑动时)。
我想在屏幕上获取View位置,将其添加到我得到的(x,y)坐标,所以最终的结果是(0,0)位于屏幕的左上角整个屏幕。
我还需要总屏幕大小,以便我知道手指何时位于右下角。
我怎样才能做到这一点?
感谢。
答案 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