public boolean onTouchEvent(MotionEvent event) {
scaleGestureDetector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
final float x = event.getX();
final float y = event.getY();
lastTouchX = x;
lastTouchY = y;
activePointerID = event.getPointerId(0);
break;
}
case MotionEvent.ACTION_MOVE: {
final int pointerIndex = event.findPointerIndex(activePointerID);
final float x = event.getX(pointerIndex);
final float y = event.getY(pointerIndex);
final float drawableX = getDrawable().getIntrinsicWidth();
final float imageX = getWidth();
final float drawableY = getDrawable().getIntrinsicHeight();
final float imageY = getHeight();
final float dx = x - lastTouchX;
final float dy = y - lastTouchY;
Log.d(TAG, "drawableX: " + drawableX + " imageX: " + imageX);
if (!scaleGestureDetector.isInProgress()
&& drawableX + dx > imageX
&& drawableY + dy > imageY
) {
mPosX += dx;
mPosY += dy;
invalidate();
Log.d(TAG, "Move");
}
lastTouchX = x;
lastTouchY = y;
break;
}