public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (!canScroll()) { return false; } mUserScaled = true; scrollBy(-distanceX, -distanceY); invalidate(); return true; }
@Override public boolean onScale(ScaleGestureDetector detector) { float span = detector.getCurrentSpan() - detector.getPreviousSpan(); float targetScale = getScale() * detector.getScaleFactor(); if (mScaleEnabled) { if (mScaled && span != 0) { mUserScaled = true; targetScale = Math.min(getMaxScale(), Math.max(targetScale, getMinScale() - MIN_SCALE_DIFF)); zoomTo(targetScale, detector.getFocusX(), detector.getFocusY()); mDoubleTapDirection = 1; invalidate(); return true; } // This is to prevent a glitch the first time // image is scaled. if (!mScaled) { mScaled = true; } } return true; }
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float diffX = e2.getX() - e1.getX(); float diffY = e2.getY() - e1.getY(); if (Math.abs(velocityX) > 800 || Math.abs(velocityY) > 800) { mUserScaled = true; scrollBy(diffX / 2, diffY / 2, 300); invalidate(); return true; } return false; }
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { //if (getScale() == 1f) return false; mUserScaled = true; scrollBy(-distanceX, -distanceY); invalidate(); return true; }
@Override public boolean onDoubleTapEvent(MotionEvent e) { if (mScaleModeAuto && e.getAction() == MotionEvent.ACTION_UP) { float targetScale = Math.min(getMaxScale(), Math.max(onDoubleTapPost(getScale()), getMinScale())); zoomTo(targetScale, e.getX(), e.getY(), DEFAULT_ANIMATION_DURATION); invalidate(); } mScaleModeAuto = true; return super.onDoubleTapEvent(e); }
@Override public boolean onScale(ScaleGestureDetector detector) { float span = detector.getCurrentSpan() - detector.getPreviousSpan(); float targetScale = getScale() * detector.getScaleFactor(); if (mScaleEnabled) { mScaleModeAuto = false; if (mScaled && span != 0) { mUserScaled = true; targetScale = Math.min(getMaxScale(), Math.max(targetScale, getMinScale() - 0.1f)); zoomTo(targetScale, detector.getFocusX(), detector.getFocusY()); invalidate(); return true; } // This is to prevent a glitch the first time image is scaled. if (!mScaled) mScaled = true; } return true; } }