public boolean onTouch(View v, MotionEvent event) { GiderosApplication app = GiderosApplication.getInstance(); if (app == null) return false; int size = event.getPointerCount(); for (int i = 0; i < size; i++) { id[i] = event.getPointerId(i); x[i] = (int) event.getX(i); y[i] = (int) event.getY(i); } int actionMasked = event.getActionMasked(); boolean isPointer = (actionMasked == MotionEvent.ACTION_POINTER_DOWN || actionMasked == MotionEvent.ACTION_POINTER_UP); int actionIndex = isPointer ? event.getActionIndex() : 0; if (actionMasked == MotionEvent.ACTION_DOWN || actionMasked == MotionEvent.ACTION_POINTER_DOWN) { app.onTouchesBegin(size, id, x, y, actionIndex); } else if (actionMasked == MotionEvent.ACTION_MOVE) { app.onTouchesMove(size, id, x, y); } else if (actionMasked == MotionEvent.ACTION_UP || actionMasked == MotionEvent.ACTION_POINTER_UP) { app.onTouchesEnd(size, id, x, y, actionIndex); } else if (actionMasked == MotionEvent.ACTION_CANCEL) { app.onTouchesCancel(size, id, x, y); } return true; }