我在获取DragEvent ACTION_DROP的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单元格拖到右侧的相邻单元格中,可以得到这些值。

  • Drop值是DragEvent返回的值。
  • SourceView值是开始拖动的单元格中的。
  • TargetView值来自拖动事件结束的单元格。

  • 谁能指出我正确的方向来获取DragEvent释放点的X,Y坐标?还是解释一下DragEvent的getX()和getY()实际返回了什么?
    谢谢

    最佳答案

    如文档中所述,

    event.getX(); event.get(y);
    

    返回 Action View 中的位置。



    因此,为了获取放置位置的绝对坐标,您可以重写GridView onTouchEvent并获取event.getRawX(),event.getRawY()的值。

    如果GridView中的每个单元格都接受dragEvent,则可以获取获得onDrop事件的View,然后执行类似的操作来检索坐标:
    @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;
    }
    

    09-15 21:21