zoukankan      html  css  js  c++  java
  • 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 }  
  • 相关阅读:
    apscheduler 踩坑
    fastapi 导出excel文件
    python flask 使用日志
    git 头指针游离问题
    C# 连接mysql填坑
    前端项目proxy小问题
    需完善--日志框架
    依赖<dependency>的scope了解
    git 退回到指定tag版本
    git切换远程仓库地址
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/3975988.html
Copyright © 2011-2022 走看看