当前位置: 代码迷 >> Android >> Android透过手势实现的缩放处理
  详细解决方案

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

热度:29   发布时间:2016-05-01 19:00:42.0
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????@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}
  相关解决方案