1 import android.app.Activity;
2 import android.os.Bundle;
3 import android.view.MotionEvent;
4 import android.view.View;
5 import android.widget.FrameLayout;
6 import android.widget.FrameLayout.LayoutParams;
7 import android.widget.ImageView;
8
9 public class MainActivity extends Activity {
10
11 private ImageView iv;
12 private FrameLayout root;
13
14 @Override
15 protected void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.activity_main);
18
19 root = (FrameLayout) findViewById(R.id.container);
20 iv = (ImageView) findViewById(R.id.iv);
21
22 root.setOnTouchListener(new View.OnTouchListener() {
23
24 float currentDistance;
25 float lastDistance = -1; // 记录最有一次所记录的值
26
27 @Override
28 public boolean onTouch(View v, MotionEvent event) {
29
30 switch (event.getAction()) {
31 case MotionEvent.ACTION_DOWN: // 触摸按下
32 System.out.println("action down");
33 break;
34 case MotionEvent.ACTION_MOVE: // 触摸移动
35 // System.out.println("action move");
36 System.out.println("触摸点个数:" + event.getPointerCount());
37
38 if (event.getPointerCount() >= 2) { // 判断大于等于两个触摸点
39
40 float offsetX = event.getX(0) - event.getX(1);
41 float offsetY = event.getY(0) - event.getY(1);
42 // 计算出两个点之间的距离
43 currentDistance = (float) Math.sqrt(offsetX * offsetX
44 + offsetY * offsetY);
45
46 if (lastDistance < 0) { // 初始值
47 lastDistance = currentDistance;
48 } else {
49 // 当前距离比上次距离>5个像素,可以识别为放大。
50 if (currentDistance - lastDistance > 5) {
51 System.out.println("放大");
52
53 FrameLayout.LayoutParams lp = (LayoutParams) iv
54 .getLayoutParams();
55 lp.width = (int) (1.1f * iv.getWidth());
56 lp.height = (int) (1.1f * iv.getHeight());
57
58 iv.setLayoutParams(lp);
59
60 lastDistance = currentDistance;
61 } else if (lastDistance - currentDistance > 5) { //
62 System.out.println("缩小");
63
64 FrameLayout.LayoutParams lp = (LayoutParams) iv
65 .getLayoutParams();
66 lp.width = (int) (0.9f * iv.getWidth());
67 lp.height = (int) (0.9f * iv.getHeight());
68
69 iv.setLayoutParams(lp);
70
71 lastDistance = currentDistance;
72 }
73 }
74 }
75 break;
76 case MotionEvent.ACTION_UP: // 触摸弹起
77 // System.out.println("action up");
78 break;
79 }
80
81 return true;
82 }
83 });
84 }
85
86 }
1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:id="@+id/container"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 tools:context="com.jikexueyuan.multouch.MainActivity"
7 tools:ignore="MergeRootFrame" >
8
9 <ImageView
10 android:id="@+id/iv"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"
13 android:src="@drawable/ic_launcher" />
14
15 </FrameLayout>