我想用一个Button实现两个不同的Drag和Drop交互。如果用户点击按钮上的长按,他可以移动按钮。这不是问题,我实施了OnLongClickListener
:
@Override
public boolean onLongClick(View v) {
ClipData dragData = ClipData.newPlainText(
AbstractFragment.BUTTON_ID_TAG, "" + v.getId());
DragShadowBuilder shadow = new DragShadowBuilder(v);
v.startDrag(dragData, shadow, null, 0);
return true;
}
如果用户触摸按钮并立即拖动,他可以从此按钮画一条线到另一个按钮。我想我必须实现OnTouchListener
接口,但我不确定识别此用户交互的条件。 <{1}}或更确切地说MotionEvent
的哪个组合需要识别此输入。
我希望你能给我一些提示!
grtz warci
答案 0 :(得分:2)
这是我的解决方案:
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
Toast.makeText(getActivity(), "onClick", Toast.LENGTH_LONG).show();
ClipData dragData = ClipData.newPlainText(
AbstractFragment.BUTTON_ID_TAG, "" + v.getId());
DragShadowBuilder shadow = new CanvasDragShadow(v);
v.startDrag(dragData, shadow, null, 0);
return true;
}
return false;
}
我添加了这个方法,它有效。也许有必要检查MotionEvent
的历史记录以获得更好的用户体验。