@Override public final boolean onTouch(View v, MotionEvent ev) { boolean handled = false; if (isZoomEnabled) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: // First, disable the Parent from intercepting the touch // event if (v.getParent() != null) { v.getParent().requestDisallowInterceptTouchEvent(true); } // If we're flinging, and the user presses down, cancel // fling if (currentFlingRunnable != null) { currentFlingRunnable.cancelFling(); currentFlingRunnable = null; } break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: // If the user has zoomed less than min scale, zoom back // to min scale if (getScale() < minScale) { RectF rect = getDisplayRect(); if (null != rect) { v.post( new AnimatedZoomRunnable(getScale(), minScale, rect.centerX(), rect.centerY())); handled = true; } } break; } // Finally, try the scale/drag/tap detector if ((multiGestureDetector != null) && multiGestureDetector.onTouchEvent(ev)) { handled = true; } } return handled; }
private void cancelFling() { if (null != mCurrentFlingRunnable) { mCurrentFlingRunnable.cancelFling(); mCurrentFlingRunnable = null; } }
private void cancelFling() { if (mCurrentFlingRunnable != null) { mCurrentFlingRunnable.cancelFling(); mCurrentFlingRunnable = null; } }