android 两点缩放图片
16lz
2021-12-04
android 两点缩放图片
package mutl.touch.sample;import android.app.Activity;import android.graphics.Matrix;import android.graphics.PointF;import android.os.Bundle;import android.util.FloatMath;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;public class Main extends Activity{private static final int NONE = 0;private static final int DRAG = 1;private static final int ZOOM = 2;private int mode = NONE;private float oldDist;private Matrix matrix = new Matrix();private Matrix savedMatrix = new Matrix();private PointF start = new PointF();private PointF mid = new PointF();@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ImageView view = (ImageView) findViewById(R.id.image_view);view.setOnTouchListener(new OnTouchListener(){@Overridepublic boolean onTouch(View v, MotionEvent event){ImageView view = (ImageView) v;switch (event.getAction() & MotionEvent.ACTION_MASK){case MotionEvent.ACTION_DOWN:savedMatrix.set(matrix);start.set(event.getX(), event.getY());mode = DRAG;break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:mode = NONE;break;case MotionEvent.ACTION_POINTER_DOWN:oldDist = spacing(event);if (oldDist > 10f){savedMatrix.set(matrix);midPoint(mid, event);mode = ZOOM;}break;case MotionEvent.ACTION_MOVE:if (mode == DRAG){matrix.set(savedMatrix);matrix.postTranslate(event.getX() - start.x,event.getY() - start.y);}else if (mode == ZOOM){float newDist = spacing(event);if (newDist > 10f){matrix.set(savedMatrix);float scale = newDist / oldDist;matrix.postScale(scale, scale, mid.x, mid.y);}}break;}// 图片设置矩阵view.setImageMatrix(matrix);return true;}private float spacing(MotionEvent event){float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);return FloatMath.sqrt(x * x + y * y);}private void midPoint(PointF point, MotionEvent event){float x = event.getX(0) + event.getX(1);float y = event.getY(0) + event.getY(1);point.set(x / 2, y / 2);}});}}
两点缩放图片DEMO下载地址:http://download.csdn.net/detail/tt5267621/3735596
更多相关文章
- Android实现图片放大缩小
- 图片走廊
- android 将图片转换成黑白图片
- Android(安卓)VectorDrawable与SVG
- 【Android】安卓中常用的图片加载方法
- Android(安卓)在程序界面上显示图片
- ImageVIew 设置图片大小
- Android: 背景图片平铺要这么干
- Android——Gallery 图片拖动效果