View.OnDragListener 如何获取绝对坐标
时间: 2023-12-13 18:02:43 浏览: 107
要获取 View.OnDragListener 中的绝对坐标,可以使用 View 的 getGlobalVisibleRect() 方法和 MotionEvent 的 getRawX() 和 getRawY() 方法。可以在 View.OnDragListener 中重写 onDrag() 方法,并在其中执行以下操作:
1. 获取 View 的全局可见矩形。
```
Rect viewRect = new Rect();
view.getGlobalVisibleRect(viewRect);
```
2. 获取 MotionEvent 的原始 X 和 Y 坐标。
```
float x = event.getRawX();
float y = event.getRawY();
```
3. 将 MotionEvent 的原始坐标转换为 View 内部的坐标。
```
int[] location = new int[2];
view.getLocationOnScreen(location);
float offsetX = x - location[0];
float offsetY = y - location[1];
```
4. 计算 MotionEvent 的绝对坐标。
```
float absoluteX = viewRect.left + offsetX;
float absoluteY = viewRect.top + offsetY;
```
这样就可以获取 View.OnDragListener 中的 MotionEvent 的绝对坐标了。
阅读全文