public boolean onTouch(View v, MotionEvent event) { int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; int actionId = event.getPointerId(pointerIndex); pointerCount = event.getPointerCount(); if (actionId < MAX_POINTERS) { lastActions[actionId] = action; } for (int i = 0; i < pointerCount; i++) { int pointerId = event.getPointerId(i); if (pointerId < MAX_POINTERS) { points[pointerId] = new PointF(event.getX(i), event.getY(i)); if (action == MotionEvent.ACTION_MOVE) { lastActions[pointerId] = action; } } } touchView.invalidate(); return true; }