开发中会使用到查看图片的功能,不仅要能查看图片而且还能双击放大,缩小等操作,下面对ImageView
进行自定义,可以实现放大缩小的功能,以后使用的时候可以直接拿来用。
/**
* 对图片进行放大缩小
* Created by acer-pc on 2018/8/21.
*/
public class DoubleScaleImageView extends AppCompatImageView implements View.OnTouchListener, ViewTreeObserver.OnGlobalLayoutListener {
private boolean isFirst = false;
private float doubleScale;// 双击放大的值
private Matrix mScaleMatrix;
private float defaultScale;// 默认的缩放值
private int mLastPinterCount;// 记录上一次多点触控的数量
private float mLastX;
private float mLastY;
private int mTouchSlop;
private boolean isCanDrag;
private boolean isCheckLeft;
private boolean isCheckTop;
private GestureDetector mGestureDetector;
public DoubleScaleImageView(Context context) {
this(context, null);
}
public DoubleScaleImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
@SuppressLint("ClickableViewAccessibility")
public DoubleScaleImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mScaleMatrix = new Matrix();
setScaleType(ScaleType.MATRIX);
setOnTouchListener(this);
// getScaledTouchSlop是一个距离,表示滑动的时候,手的移动要大于这个距离才开始移动控件。如果小于这个距离就不触发移动控件
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(