欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

触摸事件MotionEvent

程序员文章站 2022-05-04 10:46:30
触摸事件MotionEvent在用户交互中,占着非常重要的地位.首先,来看看MotionEvent中封装的一些常用的事件常量,它定义了触摸事件的不同类型. 1.单点触摸按下动作 public static final int ACTION_DOWN = 0; 2.单点触摸抬起动作 public st ......

  触摸事件MotionEvent在用户交互中,占着非常重要的地位.首先,来看看MotionEvent中封装的一些常用的事件常量,它定义了触摸事件的不同类型.

  1.单点触摸按下动作

  public static final int ACTION_DOWN = 0;

  2.单点触摸抬起动作

  public static final int ACTION_UP = 1;

  3.触摸点移动动作

  public static final int ACTION_MOVE = 2;

  4.触摸动作取消

  public static final int ACTION_CANCEL = 3;

  5.触摸动作超出边界

  public static final int ACTION_OUTSIDE = 4;

  6.多点触摸按下动作

  public static final int ACTION_POINTER_DOWN = 5;

  7.多点离开动作

  public static final int ACTION_POINTER_UP = 6;

  通常情况下,我们会在onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触摸事件的类型,并使用switch-case方法来进行筛选,这个代码的模式基本固定,如下

  @Override

  public boolean onTouchEvent(MotionEvent event) {

    //获取当前输入点的X . Y坐标(视图坐标)

    int X = (int) event.getX();

    int Y = (int) event.getY();

    switch(event.getAction()) {

      case MotionEvent.ACTION_DOWN:

      //处理按下事件

      break;

      case MotionEvent.ACTION_MOVE:

      //处理移动事件

      break;

      case MotionEvent.ACTION.UP:

      //处理抬起事件

      break;

    }

    return true;

  }

  在不涉及多点操作情况下,通常可以使用以上代码来完成触摸事件的监听,不过这里只是一个代码模板,实际开发过程中会用到复杂的逻辑的触摸事件.

  在Android中,系统提供了非常多的方法来获取坐标值,相对距离等.方法丰富固然好,但也给初学者带来了困惑,不知道在实际情况下采用什么方法,如下总结了一些API,结合坐标系来看看该如何使用它们触摸事件MotionEvent

  这些方法可以分成如下两个类别:

  * View提供的获取坐标方法

  getTop():获取到的是View本身的顶边到其父布局顶边的距离

  getLeft():获取到的View自身的左边到其父布局左边的距离

  getRight():获取到的是View自身的右边到其父布局左边的距离

  getBottom():获取到的是View自身的底部到其父布局顶边的距离

  *MotionEvent提供的方法

  getX():获取点击事件距离控件左边的距离,即视图坐标

  getY():获取点击事件距离控件顶边的距离,即视图坐标

  getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标

  getRawY():获取点击事件距离整个屏幕顶边的距离,即绝对坐标

 

  

触摸事件MotionEvent