Skip to content

Instantly share code, notes, and snippets.

@CapnSpellcheck
Created November 17, 2016 21:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CapnSpellcheck/b42e5f7cfb1fe4377fbac700f2ab925d to your computer and use it in GitHub Desktop.
Save CapnSpellcheck/b42e5f7cfb1fe4377fbac700f2ab925d to your computer and use it in GitHub Desktop.
Patch to chrisbanes/PhotoView for issue #444
From 7ab87c7543deebb48a8c1ab482eb7cab524f2d29 Mon Sep 17 00:00:00 2001
From: Julian <julian@julians-mbp.attlocal.net>
Date: Thu, 17 Nov 2016 13:34:11 -0800
Subject: [PATCH] destroying the mid zoom
---
.../co/senab/photoview/DefaultOnDoubleTapListener.java | 17 ++++++++++++-----
.../java/uk/co/senab/photoview/PhotoViewAttacher.java | 16 +++++++++++-----
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/app/src/main/java/uk/co/senab/photoview/DefaultOnDoubleTapListener.java b/app/src/main/java/uk/co/senab/photoview/DefaultOnDoubleTapListener.java
index b5a8f21..c0b2b25 100755
--- a/app/src/main/java/uk/co/senab/photoview/DefaultOnDoubleTapListener.java
+++ b/app/src/main/java/uk/co/senab/photoview/DefaultOnDoubleTapListener.java
@@ -77,13 +77,20 @@ public class DefaultOnDoubleTapListener implements GestureDetector.OnDoubleTapLi
float x = ev.getX();
float y = ev.getY();
- if (scale < photoViewAttacher.getMediumScale()) {
- photoViewAttacher.setScale(photoViewAttacher.getMediumScale(), x, y, true);
- } else if (scale >= photoViewAttacher.getMediumScale() && scale < photoViewAttacher.getMaximumScale()) {
- photoViewAttacher.setScale(photoViewAttacher.getMaximumScale(), x, y, true);
+ float nextScale;
+ if (photoViewAttacher.getMediumScale() >= 0) {
+ if (scale < photoViewAttacher.getMediumScale())
+ nextScale = photoViewAttacher.getMediumScale();
+ else if (scale >= photoViewAttacher.getMediumScale() && scale < photoViewAttacher.getMaximumScale())
+ nextScale = photoViewAttacher.getMaximumScale();
+ else
+ nextScale = photoViewAttacher.getMinimumScale();
} else {
- photoViewAttacher.setScale(photoViewAttacher.getMinimumScale(), x, y, true);
+ nextScale = (scale == photoViewAttacher.getMaximumScale() ?
+ photoViewAttacher.getMinimumScale() : photoViewAttacher.getMaximumScale());
}
+
+ photoViewAttacher.setScale(nextScale, x, y, true);
} catch (ArrayIndexOutOfBoundsException e) {
// Can sometimes happen when getX() and getY() is called
}
diff --git a/app/src/main/java/uk/co/senab/photoview/PhotoViewAttacher.java b/app/src/main/java/uk/co/senab/photoview/PhotoViewAttacher.java
index 8bb34e9..65db4b0 100755
--- a/app/src/main/java/uk/co/senab/photoview/PhotoViewAttacher.java
+++ b/app/src/main/java/uk/co/senab/photoview/PhotoViewAttacher.java
@@ -76,12 +76,18 @@ public class PhotoViewAttacher implements IPhotoView, View.OnTouchListener,
private static void checkZoomLevels(float minZoom, float midZoom,
float maxZoom) {
- if (minZoom >= midZoom) {
+ if (minZoom >= maxZoom) {
throw new IllegalArgumentException(
- "Minimum zoom has to be less than Medium zoom. Call setMinimumZoom() with a more appropriate value");
- } else if (midZoom >= maxZoom) {
- throw new IllegalArgumentException(
- "Medium zoom has to be less than Maximum zoom. Call setMaximumZoom() with a more appropriate value");
+ "Minimum zoom has to be less than Maximum zoom. Call setMinimumZoom() with a more appropriate value");
+ }
+ if (midZoom >= 0) {
+ if (minZoom >= midZoom) {
+ throw new IllegalArgumentException(
+ "Minimum zoom has to be less than Medium zoom. Call setMinimumZoom() with a more appropriate value");
+ } else if (midZoom >= maxZoom) {
+ throw new IllegalArgumentException(
+ "Medium zoom has to be less than Maximum zoom. Call setMaximumZoom() with a more appropriate value");
+ }
}
}
--
2.6.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment