gpt4 book ai didi

android - Android中拖动操作时如何取消View.OnDragListener?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:18 33 4
gpt4 key购买 nike

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

有没有办法停止或取消或中止某些外部事件或操作的拖动?例如,有 2 个 View ,View AView B,我将 View B 拖到 View A 上>。拖动时,由于某些外部事件或操作,我想取消拖动操作或取消 OnDragListener(无需将手指从 view B 移开)。

DragShadowBuilder 的代码 fragment :

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 的代码 fragment :

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;
}
}

最佳答案

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

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

关于android - Android中拖动操作时如何取消View.OnDragListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140730/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com