【问题标题】:How to cancel View.OnDragListener in android during dragging Operation?如何在拖动操作期间取消Android中的View.OnDragListener?
【发布时间】:2014-06-10 12:15:05
【问题描述】:

我正在使用view.startDrag() 开始拖动操作。拖动时,OnDragListener 中接收到事件。我也使用DragShadowBuilder 来显示View B 的最后一张图片,同时拖动。

有没有办法停止或取消或中止某些外部事件或操作的拖动?例如,有 2 个视图,View AView 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


    【解决方案1】:

    我找不到任何技巧。我尝试发送 ACTION_UP 的动作事件,但它什么也没做。只要用户的手指被按住,似乎就不会中断事件层次结构。谷歌搜索没有发现任何帮助。

    我只是设置了一个全局并等到拖动结束,然后继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多