ev.getActionMasked() == ACTION_MOVE の場合は
pointerIndex = ev.getActionIndex()
pointerId = ev.getPointerId(activePointerIndex);
が 0 になる。
つまり、「どの指が動いたか」という事を識別できない。
移動量とかを使いたい場合、イベントが起こる毎に、ID と 座標を対応付けて保存する必要があるので結構面倒くさい。移動先の座標を使うだけなら、下のようにループで全部のタッチ情報を処理すれば、無駄はあるけどそこまで大変ではない。
case MotionEvent.ACTION_MOVE: int count = ev.getPointerCount(); boolean alreadyMoved = false; for (int c = 0; c < count; c++){ int pointerId = ev.getPointerId(c); float x = ev.getX(c); float y = ev.getY(c); ... } break;
0 件のコメント:
コメントを投稿