内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
代码如下:
@Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; int pointerId = event.getPointerId(pointerIndex); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: if (pointerId == 0) { fingerOneDown = 1; fingerOneX = event.getX(pointerIndex); fingerOneY = event.getY(pointerIndex); } if (pointerId == 1) { fingerTwoDown = 1; fingerTwoX = event.getX(pointerIndex); fingerTwoY = event.getY(pointerIndex); } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_CANCEL: if (pointerId == 0) { fingerOneDown = 0; fingerOneX = event.getX(pointerIndex); fingerOneY = event.getY(pointerIndex); } if (pointerId == 1) { fingerTwoDown = 0; fingerTwoX = event.getX(pointerIndex); fingerTwoY = event.getY(pointerIndex); } break; case MotionEvent.ACTION_MOVE: if (pointerId == 0) { fingerOneDown = 1; fingerOneX = event.getX(pointerIndex); fingerOneY = event.getY(pointerIndex); } if (pointerId == 1) { fingerTwoDown = 1; fingerTwoX = event.getX(pointerIndex); fingerTwoY = event.getY(pointerIndex); } break; } return true; }
可以这样:
case MotionEvent.ACTION_MOVE: int pointerCount = event.getPointerCount(); for(int i = 0; i < pointerCount; ++i) { pointerIndex = i; pointerId = event.getPointerId(pointerIndex); Log.d("pointer id - move",Integer.toString(pointerId)); if(pointerId == 0) { fingerOneDown = 1; fingerOneX = event.getX(pointerIndex); fingerOneY = event.getY(pointerIndex); } if(pointerId == 1) { fingerTwoDown = 1; fingerTwoX = event.getX(pointerIndex); fingerTwoY = event.getY(pointerIndex); } } break;