diff --git a/photoview/src/main/java/com/github/chrisbanes/photoview/OnViewDoubleTapListener.java b/photoview/src/main/java/com/github/chrisbanes/photoview/OnViewDoubleTapListener.java new file mode 100644 index 00000000..a5dd8307 --- /dev/null +++ b/photoview/src/main/java/com/github/chrisbanes/photoview/OnViewDoubleTapListener.java @@ -0,0 +1,15 @@ +package com.github.chrisbanes.photoview; + +import android.view.View; + +public interface OnViewDoubleTapListener { + /** + * A callback to receive where the user double taps on a ImageView. You will receive a callback if + * the user taps anywhere on the view, tapping on 'whitespace' will not be ignored. + * + * @param view - View the user double tapped. + * @param x - where the user tapped from the left of the View. + * @param y - where the user tapped from the top of the View. + */ + void onViewDoubleTap(View view, float x, float y); +} diff --git a/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoView.java b/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoView.java index 8a8ba0a7..6cfc4901 100644 --- a/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoView.java +++ b/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoView.java @@ -222,6 +222,10 @@ public void setOnViewTapListener(OnViewTapListener listener) { attacher.setOnViewTapListener(listener); } + public void setOnViewDoubleTapListener(OnViewDoubleTapListener listener) { + attacher.setOnViewDoubleTapListener(listener); + } + public void setOnViewDragListener(OnViewDragListener listener) { attacher.setOnViewDragListener(listener); } diff --git a/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoViewAttacher.java b/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoViewAttacher.java index f8494d41..f64159f4 100644 --- a/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoViewAttacher.java +++ b/photoview/src/main/java/com/github/chrisbanes/photoview/PhotoViewAttacher.java @@ -81,6 +81,7 @@ public class PhotoViewAttacher implements View.OnTouchListener, private OnPhotoTapListener mPhotoTapListener; private OnOutsidePhotoTapListener mOutsidePhotoTapListener; private OnViewTapListener mViewTapListener; + private OnViewDoubleTapListener mViewDoubleTapListener; private View.OnClickListener mOnClickListener; private OnLongClickListener mLongClickListener; private OnScaleChangedListener mScaleChangeListener; @@ -234,6 +235,9 @@ public boolean onDoubleTap(MotionEvent ev) { } else { setScale(getMinimumScale(), x, y, true); } + if (mViewDoubleTapListener != null) { + mViewDoubleTapListener.onViewDoubleTap(mImageView, x, y); + } } catch (ArrayIndexOutOfBoundsException e) { // Can sometimes happen when getX() and getY() is called } @@ -434,6 +438,10 @@ public void setOnViewTapListener(OnViewTapListener listener) { mViewTapListener = listener; } + public void setOnViewDoubleTapListener(OnViewDoubleTapListener listener) { + mViewDoubleTapListener = listener; + } + public void setOnViewDragListener(OnViewDragListener listener) { mOnViewDragListener = listener; }