package net.dev123.yibo.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
public class TouchImageViewV4 extends ImageViewTouchBase {
private GestureDetector mGestureDetector;
private float mScaleFactor = 1.0F;
public TouchImageViewV4(Context context) {
super(context);
init(context);
}
public TouchImageViewV4(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
mGestureDetector = new GestureDetector(context, new GestureListener());
}
@Override
public void zoomIn() {
super.zoomIn();
mScaleFactor = getScale();
}
@Override
public void zoomOut() {
super.zoomOut();
mScaleFactor = getScale();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mGestureDetector.onTouchEvent(event);
return true;
}
private class GestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
if (mScaleFactor == 1.0F) {
mScaleFactor = 3.0F;
} else {
mScaleFactor = 1.0F;
}
float posX = e.getX();
float posY = e.getY();
posX -= (getWidth() / 2);
posY -= (getHeight() / 2);
postTranslate(-posX, -posY);
zoomTo(mScaleFactor);
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
postTranslate(-distanceX, -distanceY);
center(true, true);
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
performClick();
return true;
}
@Override
public void onLongPress(MotionEvent e) {
performLongClick();
}
}
}