<< Android-Note
マルチタッチイベントを受け取るには
画面の拡大・縮小などに使われるピンチ操作などを実装しようとする場合、2点以上のマルチタッチイベントを受け取る必要があります。
調べたところによるとマルチタッチを受け取るにはgetActionメソッドで受け取ったアクションにMotionEvent.ACTION_MASKでビット積をとってマスクする必要があります。
public boolean onTouchEvent(MotionEvent event) { switch(event.getAction() & MotionEvent.ACTION_MASK){ case MotionEvent.ACTION_POINTER_DOWN: /** 2点以上の処理*/ break; } }
2点以上タッチされたかを感知するには以前はACTION_POINTER_2_DOWNやACTION_POINTER_3_DOWNなどを使っていましたが、現在では非推奨になっていてACTION_POINTER_DOWNを使う方が良いみたいです。
そして各点の座標を調べるには次のように処理します。
public boolean onTouchEvent(MotionEvent event) { switch(event.getAction() & MotionEvent.ACTION_MASK){ case MotionEvent.ACTION_POINTER_DOWN: /** 2点以上の処理*/ break; case MotionEvent.ACTION_MOVE: for(int i = 0; i < event.getPointerCount(); ++i){ Log.i("TAG", "x[" + i + "] = " + event.getX(i) "y[" + i + "] = " + event.getY(i)); } break; } }
getXやgetYにポインターのインデックスを渡せばそのインデックス番のポインターの位置が分かります。
以上、マルチタッチイベントを受け取る方法でした。
© Kaz