Android 如何获得DrageEvent.ACTION\u DROP的正确X,Y坐标

Android 如何获得DrageEvent.ACTION\u DROP的正确X,Y坐标,android,drag-and-drop,Android,Drag And Drop,我很难得到DragEvent动作的X,Y坐标 我正在尝试设置gridview单元格拖放的动画,从释放点的X,Y到新的X,Y设置单元格的动画 下面是我用来获取X,Y坐标的代码。但是,它不会返回我期望的值 @Override public boolean onDrag(View v, DragEvent event) { switch (action) { case DragEvent.ACTION_DROP: float x = event.getX();

我很难得到DragEvent动作的X,Y坐标

我正在尝试设置gridview单元格拖放的动画,从释放点的X,Y到新的X,Y设置单元格的动画

下面是我用来获取X,Y坐标的代码。但是,它不会返回我期望的值

 @Override
 public boolean onDrag(View v, DragEvent event) {
 
   switch (action) {
     case DragEvent.ACTION_DROP:
       float x = event.getX();
       float y = event.getY();
     break;
   }
}
将第一个gridview单元格拖动到右侧相邻的单元格可以得到这些值

下降X,Y:176.0127.0

SourceView X,Y:0.0,0.0

TargetView X,Y 360.0,0.0

  • Drop值是从DragEvent返回的值。
  • SourceView值是开始拖动的单元格中的值
  • TargetView值来自拖动事件结束的单元格
有人能告诉我如何得到DragEvent释放点的X,Y坐标的正确方向吗?或者解释DrageEvent的getX()和getY()实际返回什么


谢谢

如文件所述

event.getX(); event.get(y);
返回拖动动作在视图中的位置

getX()和getY()方法在视图对象的边界框中提供拖动点的X和Y位置

因此,为了获得放置位置的绝对坐标,您可以覆盖GridView onTouchEvent并获得event.getRawX()、event.getRawY()的值

如果GridView中的每个单元格都接受DrageEvent,则可以获取获取onDrop事件的视图,并执行类似操作以检索坐标:

@Override
public boolean onDrag(View v, DragEvent event) {
    switch (event.getAction()) {
        case DragEvent.ACTION_DROP:
        int[] oldFolderCellPosition = new int[2];
        v.getLocationOnScreen(oldFolderCellPosition);
        return true;
}

我遇到过这样的问题。有三件事很重要 1-在父视图上设置拖动侦听器(例如:线性布局或相对或..) 2-使用“动作”拖放以获取坐标x、y,而不是“动作”拖放
3-在要将其拖动到父视图上的视图上设置startDrag()。例如,您可以在longclick事件中使用setonlongclick()和setStarDrag()

谢谢您的回复。你是对的,我的错误是假设x,y是相对于屏幕的,而不是视图本身。