本文实例介绍了Android实现ImageView图片双击放大及缩小的相关技巧,分享给大家供大家参考,具体内容如下
public class DoubleScaleImageView extends ImageView implements OnTouchListener, 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() { @Override public boolean onDoubleTap(MotionEvent e) { float x = e.getX(); float y = e.getY(); if (getScale()width && imageHeight height) { scale = height * 1.0f / imageHeight; } // 如果图片的宽度都 大于或小于控件宽度,我们则要对图片进行对应缩放,保证图片占满控件 if ((imageWidth > width && imageHeight > height) || (imageWidth 0 && isCheckTop) { delY = -rectf.top; } if (rectf.bottom 0 && isCheckLeft) { delX = -rectf.left; } if (rectf.right mTouchSlop; } /** * 获取图片的位置 * @description: * @date 2016-1-8 上午9:02:10 */ private RectF getMatrixRectf() { Matrix matrix = mScaleMatrix; RectF recft = new RectF(); if (getDrawable() != null) { recft.set(0, 0, getDrawable().getIntrinsicWidth(), getDrawable().getIntrinsicHeight()); matrix.mapRect(recft); } return recft; } // 获取当前图片的缩放值 private float getScale() { float values[] = new float[9]; mScaleMatrix.getValues(values); return values[Matrix.MSCALE_X]; } }
以上就是安卓实现ImageView图片双击放大及缩小的全部代码,希望对大家的学习有所帮助。