这个主要是根据手势缩放图片功能改装的一个简易Demo.熟悉一下图形操作..
代码如下:
package hfut.gmm;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PointF;import android.os.Bundle;import android.util.FloatMath;import android.util.Log;import android.view.MotionEvent;import android.view.View;public class MultiTouch extends Activity { PointF start = new PointF(); private Matrix matrix=new Matrix(); private Matrix savedMatrix=new Matrix(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); MyView mv=new MyView(this); this.setContentView(mv); }} class MyView extends View{ static final int NONE = 0; static final int DRAG = 1; static final int ZOOM = 2; int mode = NONE; float oldDist = 1f; float mr=0; float mx; float my; public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub Log.d("Infor", "触摸监听到了..."); switch(event.getActionMasked()){ case MotionEvent.ACTION_DOWN://单点触碰 mx=event.getX(); mr=50; Log.d("Infor", "mx"+mx); my=event.getY(); Log.d("Infor", "my"+my); mode=this.DRAG; break; case MotionEvent.ACTION_POINTER_DOWN://多点触碰 oldDist=this.spacing(event); if(oldDist>10f){ Log.d("Infor", "oldDist"+oldDist); } mode=ZOOM; break; case MotionEvent.ACTION_MOVE://移动 if(mode==DRAG){ Log.d("Infor", "单点移动。。。"); mx=event.getX(); my=event.getY(); } else if(mode==ZOOM){ float newDist=spacing(event); if(newDist>10){ mr=newDist/oldDist*100; Log.d("Infor", "多点移动。。。"); Log.d("Infor", "newDist:"+newDist); } } break; case MotionEvent.ACTION_UP: mode=this.NONE; break; case MotionEvent.ACTION_POINTER_UP: mode=this.NONE; break; } invalidate(); 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); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint=new Paint(); paint.setColor(Color.BLUE); canvas.drawCircle(mx, my, mr, paint); } }
展示结果如下: