1. Android坐标系
Android坐标系如图,
系统提供了getLocationOnScreen(inlocation[])方法来来获取android坐标系中国年点的位置,另外,在触控事件中使用getRawX()、getRawY()方法所获得的坐标同样时Android坐标系中的坐标
2. 视图坐标系
视图坐标系描述了子视图在父视图中的位置关系,具体如图,在触控事件中,通过getX()、getY()所获得的坐标就是视图坐标系中的坐标。
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来获取坐标值,相对距离等,具体如图:
这些方法可以分成如下两类:
- View提供的获取坐标方法
getTop(): 获取view自身的顶部到其父布局顶部的距离;
getLeft():获取view自身左边到其父布局左边的距离;
getRight(): 获取view自身右边到其父布局左边的距离;
getBottom(): 获取view自身底部到其父布局顶部的距离;
MotionEvent提供的方法
getX(): 获取触摸点距离控件左边的距离,即视图坐标。
getY(): 获取触摸点距离控件定边的距离,即视图坐标。
getRawX: 获取触摸点距离屏幕左边的距离,即绝对坐标。
getRawY: 获取触摸点距离屏幕顶边的距离,即绝对坐标。