3

1 つのボタンで 2 つの異なるドラッグ アンド ドロップ操作を実装したいと考えています。ユーザーがボタンを長押しすると、ボタンを移動できます。これは問題ありません、私は実装しました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ますが、このユーザー インタラクションを認識するための条件がわかりません。この入力を認識するために必要な s のMotionEvent組み合わせはどれですか。MotionEvent

ヒントを教えていただければ幸いです!

grtz warci

4

1 に答える 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ユーザーエクスペリエンスを向上させるために、 の履歴を確認する必要があるかもしれません。

于 2012-12-10T14:23:51.927 に答える