我真的有时间搞清楚这个,到目前为止找不到任何有相关经验的朋友.在我发布我的第一个应用程序之前,这是我非常最后的功能,所以它让我疯狂,因为它已经陷入困境,最终即将结束!
如果我将物体放在可接受的区域,我的拖放效果会很好.但是,如果丢弃在其他地方我没有得到事件,并且在失败的拖放操作后无法清理.我需要触发ACTION_DRAG_ENDED事件.但是,如果我使用值为true的ACTION_DRAG_STARTED响应(意味着它可以接受该对象),则仅触发(根据文档).问题是ACTION_DRAG_STARTED没有解雇!
所以我认为问题的关键在于我没有得到ACTION_DRAG_STARTED.我在这里放置了所有相关的拖拽代码(或至少几乎全部):
private OnTouchListener onTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Item current = (Item) ((View) v.getTag()).getTag();
//ClipData data = ClipData.newPlainText("test", "testText");
View dragView = (View) v.getTag();
DragShadowBuilder shadowBuilder = new ItemDragShadowBuilder(dragView,
new Point(v.getWidth()/2, v.getHeight()/2));
dragSource = dragView;
v.startDrag(null, shadowBuilder, current, 0);
dragView.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
};
private static class ItemDragShadowBuilder extends View.DragShadowBuilder {
private Point touchPoint = null;
private Point sizePoint …Run Code Online (Sandbox Code Playgroud)