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


更多相关文章

  1. Android实现图片放大缩小
  2. 图片走廊
  3. android 将图片转换成黑白图片
  4. Android(安卓)VectorDrawable与SVG
  5. 【Android】安卓中常用的图片加载方法
  6. Android(安卓)在程序界面上显示图片
  7. ImageVIew 设置图片大小
  8. Android: 背景图片平铺要这么干
  9. Android——Gallery 图片拖动效果

随机推荐

  1. React Native的ActionSheet实现
  2. android 点击获取验证码显示倒计时并不可
  3. Android(安卓)系统启动流程总结
  4. apk、dex、odex梳理
  5. Android(安卓)Studio使用技巧
  6. android view滑动的几种方法
  7. Android(安卓)Fragment与Fragment、Activ
  8. Android(安卓)开机自动启动服务
  9. Android(安卓)ViewGroup中addView方法使
  10. android 端拍照并运用Tesseract OCR 识别