我无法获取DragEvent ACTION_DROP的X,Y坐标。
我正在尝试拖动网格视图单元格的动画,将单元格从释放点的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 X,Y:176.0,127.0
SourceView X,Y:0.0,0.0
TargetView X,Y 360.0,0.0
有人能指出我如何获得DragEvent释放点的X,Y坐标的正确方向吗?或者解释DragEvent的getX()和getY()实际返回的内容是什么?
由于
答案 0 :(得分:3)
如文档中所述,
event.getX(); event.get(y);
返回视图中拖动操作的位置。
getX()和getY()方法在View对象的边界框内提供拖动点的X和Y位置。
因此,为了获得放置位置的绝对坐标,您可以覆盖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;
}
答案 1 :(得分:0)