我正在使用view.startDrag()
开始拖动操作。在拖动时,会在OnDragListener
中收到事件。我也会使用DragShadowBuilder
在拖动时显示View B
的最后一张图片。
有没有办法停止或取消或中止某些外部事件或操作的拖动?例如,有2个视图,View A
和View B
,我在View B
上拖动View A
。在拖动时,由于某些外部事件或操作,我想取消拖动操作或取消OnDragListener
(不要将我的手指从view B
移开。)
DragShadowBuilder
的代码段:
DragShadowBuilder shadowBuilder = new DragShadowBuilder(view) {
@Override
public void onDrawShadow(Canvas canvas) {
canvas.drawBitmap(b, 0, 0, new Paint());
super.onDrawShadow(canvas);
}
};
boolean dragSuccess = false;
dragSuccess = view.startDrag(null, shadowBuilder, view, 0);
OnDragListener
的代码段:
private final class ViewDragListener implements OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
log("ACTION_DRAG_STARTED");
break;
case DragEvent.ACTION_DRAG_ENTERED:
log("ACTION_DRAG_ENTERED");
break;
case DragEvent.ACTION_DRAG_EXITED:
log("ACTION_DRAG_EXITED");
case DragEvent.ACTION_DROP:
log("ACTION_DROP");
mX = (int) event.getX();
mY = (int)event.getY();
break;
case DragEvent.ACTION_DRAG_ENDED:
log("ACTION_DRAG_ENDED");
//Doing some cleanup operations.
break;
case DragEvent.ACTION_DRAG_LOCATION:
log("ACTION_DRAG_LOCATION");
break;
default:
break;
}
return true;
}
}
答案 0 :(得分:0)
我无法找到任何技巧。我尝试发送一个ACTION_UP的动作事件,它没有做任何事情。只要用户的手指被按住,似乎没有中断事件层次结构。我没有找到任何帮助谷歌搜索。
我只是设置了一个全局并等待拖动结束,然后继续。