Android坐标系详解
Android中有两种坐标系
- 一种是绝对坐标系,即Android坐标系。将屏幕最左上角的顶点作为Android坐标系的原点。如图:
系统提供了两种方法获取Android坐标系中点的位置:
1.getLocationOnScreen(intlocation[]),该方法待补充
2.在触控时间中使用getRawX()、getRawY()方法
- 一种是相对坐标系,即视图坐标系。以父视图左上角为坐标原点。如图:
Android触控事件——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方法进行筛选,常见代码格式如下:
@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;
}
}
下图总结了一些API,结合Android坐标系来看看他们具体的含义。
- View提供的获取坐标的方法:getTop(),getLeft(),getRight(),getBottom().
- MotionEvent提供的方法:getX(),getY(),getRawX(),getRawY().