package com.yuyh.sprintnba.widget.photodraweeview;
import android.graphics.RectF;
import android.view.GestureDetector;
import android.view.MotionEvent;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.view.DraweeView;
public class DefaultOnDoubleTapListener implements GestureDetector.OnDoubleTapListener {
private Attacher mAttacher;
public DefaultOnDoubleTapListener(Attacher attacher) {
setPhotoDraweeViewAttacher(attacher);
}
@Override public boolean onSingleTapConfirmed(MotionEvent e) {
if (mAttacher == null) {
return false;
}
DraweeView<GenericDraweeHierarchy> draweeView = mAttacher.getDraweeView();
if (draweeView == null) {
return false;
}
if (mAttacher.getOnPhotoTapListener() != null) {
final RectF displayRect = mAttacher.getDisplayRect();
if (null != displayRect) {
final float x = e.getX(), y = e.getY();
if (displayRect.contains(x, y)) {
float xResult = (x - displayRect.left) / displayRect.width();
float yResult = (y - displayRect.top) / displayRect.height();
mAttacher.getOnPhotoTapListener().onPhotoTap(draweeView, xResult, yResult);
return true;
}
}
}
if (mAttacher.getOnViewTapListener() != null) {
mAttacher.getOnViewTapListener().onViewTap(draweeView, e.getX(), e.getY());
return true;
}
return false;
}
@Override public boolean onDoubleTap(MotionEvent event) {
if (mAttacher == null) {
return false;
}
try {
float scale = mAttacher.getScale();
float x = event.getX();
float y = event.getY();
if (scale < mAttacher.getMediumScale()) {
mAttacher.setScale(mAttacher.getMediumScale(), x, y, true);
} else if (scale >= mAttacher.getMediumScale() && scale < mAttacher.getMaximumScale()) {
mAttacher.setScale(mAttacher.getMaximumScale(), x, y, true);
} else {
mAttacher.setScale(mAttacher.getMinimumScale(), x, y, true);
}
} catch (Exception e) {
// Can sometimes happen when getX() and getY() is called
}
return true;
}
@Override public boolean onDoubleTapEvent(MotionEvent event) {
return false;
}
public void setPhotoDraweeViewAttacher(Attacher attacher) {
mAttacher = attacher;
}
}