關于Android手勢縮放圓球

jopen 12年前發布 | 25K 次閱讀 Android Android開發 移動開發

這個主要是根據手勢縮放圖片功能改裝的一個簡易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);

}


}</pre>展示結果如下:
關于Android手勢縮放圓球 關于Android手勢縮放圓球

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!