android 多点触控

多点触控

1.多点触控从字面意思讲就是你用大于等于2根的手指触摸子啊手机屏幕上。

 

Android中监听触摸事件是onTouchEvent方法,它的参数为MotionEvent,下面列举MotionEvent的一些常用的方法:

 

getPointerCount() 获得触屏的点数。

getPointerId(int pointerIndex) 返回一个触摸点的标示,pointIndex是你第几个触控点的索引

 

getX() 获得触屏的X坐标值

 

getY() 获得触屏的Y坐标值

 

getAction() 获得触屏的动作

 

ACTION_DOWN:按下的动作开始,比如用手指按屏幕。

 

ACTION_UP:按下的动作完成,比如手指停止按屏幕,离开屏幕。

 

ACTION_MOVE:在动作开始和完成之间的移动,比如手指在屏幕上滑动。

 

 MotionEvent.ACTION_POINTER_1_DOWN:第一个触摸点点击事件  

 MotionEvent.ACTION_POINTER_2_DOWN:第二个触摸点点击事件  

 MotionEvent.ACTION_POINTER_1_UP:第一个触摸点松开事件  

 MotionEvent.ACTION_POINTER_2_UP:第二个触摸点松开事件 

 

2.下面通过一个例子来说明:
注意: onTouchEvent返回true 要不是没有效果的

 

 1 public class MyView extends View{  
 2   
 3     public MyView(Context context, AttributeSet attrs, int defStyle) {  
 4         super(context, attrs, defStyle);  
 5         // TODO Auto-generated constructor stub  
 6     }  
 7   
 8     public MyView(Context context, AttributeSet attrs) {  
 9         super(context, attrs);  
10         // TODO Auto-generated constructor stub  
11     }  
12   
13     public MyView(Context context) {  
14         super(context);  
15         // TODO Auto-generated constructor stub  
16     }  
17   
18     @Override  
19     protected void onDraw(Canvas canvas) {  
20         Paint mPaint = new Paint();  
21         mPaint.setColor(Color.GRAY);  
22         mPaint.setTextSize(30);  
23         canvas.drawText("呵呵", 100, 200, mPaint);  
24     }  
25   
26     @Override  
27     public boolean onTouchEvent(MotionEvent event) {  
28   
29         int pointCount = event.getPointerCount();  
30         System.out.println(pointCount);  
31         if (pointCount == 2) {  
32             final float x0 = event.getX(event.getPointerId(0));  
33             final float y0 = event.getY(event.getPointerId(0));  
34   
35             final float x1 = event.getX(event.getPointerId(1));  
36             final float y1 = event.getY(event.getPointerId(1));  
37   
38             switch (event.getAction()) {  
39                 case MotionEvent.ACTION_POINTER_2_DOWN:  
40                     System.out.println("ACTION_POINTER_2_DOWN");  
41                     break;  
42                 case MotionEvent.ACTION_POINTER_1_DOWN:  
43                     System.out.println("ACTION_POINTER_1_DOWN");  
44                     break;  
45                 case MotionEvent.ACTION_POINTER_1_UP:  
46                     System.out.println("ACTION_POINTER_1_UP");  
47                     break;  
48                 case MotionEvent.ACTION_POINTER_2_UP:  
49                     System.out.println("ACTION_POINTER_2_UP");  
50                     break;  
51                 case MotionEvent.ACTION_MOVE: {  
52                     System.out.println("ACTION_MOVE");  
53                     break;  
54                 }  
55             }  
56               
57             System.out.println(x0+" "+x1+" "+y0+" "+y1);  
58         }  
59   
60         return true;  
61     }  
62       
63       
64       
65   
66 }  

 

posted @ 2014-09-16 22:33  perfect亮  阅读(780)  评论(0编辑  收藏  举报