Android23-视图坐标系以及MotionEvent事件

1. Android坐标系

Android坐标系如图,

Android23-视图坐标系以及MotionEvent事件_第1张图片
2017-05-03_13-47-30.png

系统提供了getLocationOnScreen(inlocation[])方法来来获取android坐标系中国年点的位置,另外,在触控事件中使用getRawX()、getRawY()方法所获得的坐标同样时Android坐标系中的坐标

2. 视图坐标系

视图坐标系描述了子视图在父视图中的位置关系,具体如图,在触控事件中,通过getX()、getY()所获得的坐标就是视图坐标系中的坐标。

Android23-视图坐标系以及MotionEvent事件_第2张图片
2017-05-03_13-48-11.png

3. 触控事件--MotionEvent

  • MotionEvent中封装了一些常用的事件常量,它定义了触控事件的不同类型。
//单点触摸按下动作
public static final int ACTION_DOWN = 0;
//单点触摸离开动作
public static final int ACTION_UP = 1;
//触摸点移动动作
public static final int ACTION_MOVE = 2;
//触摸动作取消
public static final int ACTION_CANCEL = 3;
//触摸动作超出边界
public static final int ACTION_OUTSIDE = 4;
//多点触摸按下动作
public static final int ACTION_POINTER_DOWN = 5;¡¡
//多点离开动作¡™¡
public static final int ACTION_POINTER_UP = 6;
  • 通常情况下会在onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触控事件的类型,并使用switch-case方法来进行筛选。大致模版如下:
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;
}
  • 此外,安卓还提供了丰富的API来获取坐标值,相对距离等,具体如图:
Android23-视图坐标系以及MotionEvent事件_第3张图片
2017-05-03_14-01-42.png

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

  • View提供的获取坐标方法
  • getTop(): 获取view自身的顶部到其父布局顶部的距离;

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

  • getRight(): 获取view自身右边到其父布局左边的距离;

  • getBottom(): 获取view自身底部到其父布局顶部的距离;

  • MotionEvent提供的方法

  • getX(): 获取触摸点距离控件左边的距离,即视图坐标。

  • getY(): 获取触摸点距离控件定边的距离,即视图坐标。

  • getRawX: 获取触摸点距离屏幕左边的距离,即绝对坐标。

  • getRawY: 获取触摸点距离屏幕顶边的距离,即绝对坐标。

你可能感兴趣的:(Android23-视图坐标系以及MotionEvent事件)