1

Android のマルチタッチ システムに問題があります。私はそれがどのように機能するかについて彼らのドキュメントに行ったことがあり、それから私はここにあるこのコードのビットが機能するかもしれないと思った.ドラッグすると、ポインターが ID 0 で更新されるだけです。ここで何が問題なのかわかりません。誰か助けてください。(また、このメソッドは別のクラスの onTouch() イベントから呼び出され、はい、true を返します:))

public void tap(MotionEvent e) {
    int index = MotionEventCompat.getActionIndex(e);
    int ID = MotionEventCompat.getPointerId(e, index);
    switch(MotionEventCompat.getActionMasked(e)) {
    case MotionEvent.ACTION_DOWN:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    case MotionEvent.ACTION_POINTER_DOWN:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    case MotionEvent.ACTION_MOVE:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    case MotionEvent.ACTION_UP:
        pointers[ID] = new Point((int)MotionEventCompat.getX(e, index), (int)MotionEventCompat.getY(e, index));
        break;
    }
}
4

1 に答える 1

1

1 本の指でドラッグするだけなので、ID 0 は正しいです。ポインタは指を意味します。ここでのインデックスも、シナリオでは常に 0 にする必要があります。さらに、次のように使用するだけですMotionEvent e

e.getPointerCount ();
e.getX (pointerIndex);
e.getY (pointerIndex);
于 2013-09-30T02:11:57.557 に答える