安卓:在长按和触摸时进行不同的拖放操作

3

我希望能够用一个按钮实现两种不同的拖放交互。如果用户长按按钮,他可以移动按钮。这不是问题,我已经实现了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接口,但是我不确定如何识别这种用户交互的条件。我需要识别哪个MotionEvent或哪些MotionEvent的组合以识别此输入。
希望您可以给我一些提示!
问候 warci
1个回答

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 的历史记录以获得更好的用户体验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接