我在获取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单元格拖到右侧的相邻单元格中,可以得到这些值。谁能指出我正确的方向来获取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;
}