Android通过手势实现的缩放处理
01 import android.app.Activity;
02 import android.content.Context;
03 import android.graphics.Canvas;
04 import android.graphics.Color;
05 import android.graphics.Paint;
06 import android.os.Bundle;
07 import android.util.DisplayMetrics;
08 import android.view.MotionEvent;
09 import android.view.View;
10
11 /**
12 * ...
13 *
14 * @author vlinux
15 *
16 */
17 public class MultiTouchTestActivity extends Activity {
18 /** Called when the activity is first created. */
19 @Override
20 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 @Override
40 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 @Override
66 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 }
作者“ljbal”
补充:移动开发 , Android ,