首页 > 代码库 > android 多点触控

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 }  

 

android 多点触控