读书人

Android透过手势实现的缩放处理

发布时间: 2012-07-15 20:20:06 作者: rapoo

Android通过手势实现的缩放处理
01 import android.app.Activity; 02import android.content.Context; 03import android.graphics.Canvas; 04import android.graphics.Color; 05import android.graphics.Paint; 06import android.os.Bundle; 07import android.util.DisplayMetrics; 08import android.view.MotionEvent; 09import android.view.View; 10??11/** 12?* ... 13?*? 14?* @author vlinux 15?*? 16?*/17public class MultiTouchTestActivity extends Activity { 18????/** Called when the activity is first created. */19????@Override20????public void onCreate(Bundle savedInstanceState) { 21????????super.onCreate(savedInstanceState); 22????????// setContentView(R.layout.main); 23????????View view = new MultiTouchView(this); 24????????setContentView(view); 25????} 26??27????class MultiTouchView extends View { 28??29????????private float x1; 30????????private float y1; 31????????private float x2; 32????????private float y2; 33??34????????public MultiTouchView(Context context) { 35????????????super(context); 36????????????// TODO Auto-generated constructor stub 37????????} 38??39????????@Override40????????public boolean onTouchEvent(MotionEvent event) { 41????????????// TODO Auto-generated method stub 42??43????????????float size = event.getSize(); 44??45????????????int szi = (int) size; 46????????????int dxi = szi >> 12; 47????????????int dyit = ((1 << 12) - 1); 48????????????int dyi = szi & dyit; 49??50????????????DisplayMetrics metrics = getResources().getDisplayMetrics(); 51????????????float dx = metrics.widthPixels * dxi / (float) dyit; 52????????????float dy = metrics.heightPixels * dyi / (float) dyit; 53??54????????????x1 = event.getX(); 55????????????y1 = event.getY(); 56??57????????????x2 = x1 + dx; 58????????????y2 = y1 + dy; 59??60????????????invalidate(); 61??62????????????return true; 63????????} 64??65????????@Override66????????protected void onDraw(Canvas canvas) { 67????????????// TODO Auto-generated method stub 68????????????super.onDraw(canvas); 69??70????????????float r = (float) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) 71????????????????????* (y1 - y2)) / 2; 72????????????r = 50 >= r ? 50 : r; 73??74????????????Paint paint = new Paint(); 75????????????paint.setColor(Color.BLUE); 76????????????canvas.drawCircle(x1, y1, r, paint); 77??78????????} 79??80????} 81??82}

读书人网 >Android

热点推荐