【发布时间】:2014-06-10 12:15:05
【问题描述】:
我正在使用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;
}
}
【问题讨论】:
标签: android drag-and-drop