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 在程序界面上显示图片
  5. ImageVIew 设置图片大小
  6. Android: 背景图片平铺要这么干
  7. Android——Gallery 图片拖动效果
  8. Android ImageView图片自适应
  9. android异步图片加载三之handler+线程池+消息队列模式

随机推荐

  1. android重写Dialog(接上文)
  2. android 自定义线程池ThreadPoolUtils工
  3. Android(Java):自定义控件
  4. android:persistentDrawingCache 的含义
  5. Android studio使用教程
  6. Android 根文件系统启动分析
  7. 让一个小图片重复出现,形成一张大图片
  8. Android在Button按钮上同时显示文字和图
  9. android之CheckBox
  10. android 自定义checkbox