1 //多点触摸的简单应用----拖动图片
2 public class MainActivity extends Activity {
3 private FrameLayout root;
4 private ImageView imageView;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.activity_main);
10 imageView = (ImageView) findViewById(R.id.image);
11 root = (FrameLayout) findViewById(R.id.container);
12 // 监听触摸事件
13 root.setOnTouchListener(new OnTouchListener() {
14
15 @Override
16 public boolean onTouch(View v, MotionEvent event) {
17 // TODO Auto-generated method stub
18 switch (event.getAction()) {
19 // 触摸按下
20 case MotionEvent.ACTION_DOWN:
21 System.out.println("----->>ACTION_DOWN");
22 break;
23 // 触摸移动
24 case MotionEvent.ACTION_MOVE:
25 System.out.println("----->>ACTION_MOVE");
26 // 获取一个触摸点
27 System.out.println(String.format("x:%f,y:%f", event.getX(),
28 event.getY()));
29 // ---------获取一个安卓Android触摸点坐标-----拖动图片----------------
30 FrameLayout.LayoutParams lp = (LayoutParams) imageView
31 .getLayoutParams();
32 lp.leftMargin = (int) event.getX();
33 lp.topMargin = (int) event.getY();
34 imageView.setLayoutParams(lp);
35
36 System.out.println("===>>触摸点个数" + event.getPointerCount());
37 // 获取多个触摸点----只能在真机上测试
38 // System.out.println(String.format("x1:%f y1:%f,x2:%f, y2:%f",
39 // event.getX(0),event.getY(0),event.getX(1),event.getY(2)));
40 break;
41 // 触摸抬起
42 case MotionEvent.ACTION_UP:
43 System.out.println("----->>ACTION_UP");
44 break;
45
46 default:
47 break;
48 }
49 return true;// 后续事件是否需要被触发
50 }
51 });
52 }
53
54 }
1 //多点触摸的简单应用----实现图片的放大缩小
2 public class MainActivity extends Activity {
3 private FrameLayout root;
4 private ImageView imageView;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.activity_main);
10 imageView = (ImageView) findViewById(R.id.image);
11 root = (FrameLayout) findViewById(R.id.container);
12 // 监听触摸事件
13 root.setOnTouchListener(new OnTouchListener() {
14 float currentDistance;
15 float lastDistance = -1;
16
17 @Override
18 public boolean onTouch(View v, MotionEvent event) {
19
20 // TODO Auto-generated method stub
21 switch (event.getAction()) {
22 // 触摸按下
23 case MotionEvent.ACTION_DOWN:
24 System.out.println("----->>ACTION_DOWN");
25 break;
26 // 触摸移动
27 case MotionEvent.ACTION_MOVE:
28 if (event.getPointerCount() >= 2) {
29 // 计算两点之间的距离
30 float offsetX = event.getX(0) - event.getX(1);
31 float offsetY = event.getY(0) - event.getY(1);
32 currentDistance = (float) Math.sqrt(offsetX * offsetX
33 + offsetY * offsetY);
34 }
35 if (lastDistance < 0) {// 初始化
36 lastDistance = currentDistance;
37 } else {
38 if (currentDistance - lastDistance > 5) {
39 System.out.println("放大");
40 FrameLayout.LayoutParams lp = (LayoutParams) imageView
41 .getLayoutParams();
42 lp.width = (int) (imageView.getWidth() * 1.1);
43 lp.height = (int) (imageView.getHeight() * 1.1);
44 imageView.setLayoutParams(lp);
45 lastDistance = currentDistance;
46
47 } else if (currentDistance - lastDistance < 5) {
48 System.out.println("缩小");
49 FrameLayout.LayoutParams lp = (LayoutParams) imageView
50 .getLayoutParams();
51 lp.width = (int) (imageView.getWidth() * 0.9);
52 lp.height = (int) (imageView.getHeight() * 0.9);
53 imageView.setLayoutParams(lp);
54 lastDistance = currentDistance;
55 }
56 }
57 System.out.println("----->>ACTION_MOVE");
58 // 获取一个触摸点
59 System.out.println(String.format("x:%f,y:%f", event.getX(),
60 event.getY()));
61
62 System.out.println("===>>触摸点个数" + event.getPointerCount());
63 // 获取多个触摸点----只能在真机上测试
64 // System.out.println(String.format("x1:%f y1:%f,x2:%f, y2:%f",
65 // event.getX(0),event.getY(0),event.getX(1),event.getY(2)));
66 break;
67 // 触摸抬起
68 case MotionEvent.ACTION_UP:
69 System.out.println("----->>ACTION_UP");
70 break;
71
72 default:
73 break;
74 }
75 return true;// 后续事件是否需要被触发
76 }
77 });
78 }
79
80 }