一Android 原点坐标系
getLocationOnScreen(int location) 系统通过这个方法来获取Android坐标系中点的位置
在触控事件中使用getRawX() ,getRawY() 方法所获得的坐标同样式Android坐标系中的坐标
视图坐标系
二 Android视图坐标系,是一原点方向向右为X轴,正方向
以原点向下为Y轴正方向,只不过在视图坐标系中,原点不再式Android坐标系统中屏幕的最左上角,
而是以父视图左上角为坐标原点
在触控事件中,通过getX(),getY()所获得的坐标就是视图坐标系中的坐标
三 触控事件 ---MotionEvent
1 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方法来
进行筛选
package com.yifei.myapplication;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class MotionEventView extends View {
public MotionEventView(Context context, AttributeSet attrs) {
super(context, attrs);
}
//
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("MotionEvent", "onTouchEvent: "+event.getAction());
int x = (int) event.getX();
int y = (int) event.getY();
Log.d("MotionEvent", "x--"+x+"y---"+y);
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE: //2
break;
case MotionEvent.ACTION_UP: //1
Log.d("MotionEvent", "抬起");
break;
case MotionEvent.ACTION_DOWN: //0
Log.d("MotionEvent", "被按下");
break;
default:
return false;
}
return true;//事件不再向上传递
}
@Override
public boolean onTrackballEvent(MotionEvent event) {
return super.onTrackballEvent(event);
}
}
3View提供的获取坐标的方法
getTop() 获取到的是View 自身的顶边到其父布局顶边的距离
getLeft() 获取到的是View 自身到其父布局左边的距离
getRight() 获取到的是View 自身到其父布局右边的距离
getBottom() 获取到的是View 自身到其父布局下边的距离
MotionEvent提供的方法
getX(); 获取点击事件距离控件左边的距离,即视图坐标
getY() 获取点击事件距离控件上边的距离,,即视图坐标
getRawX() 获取点击事件距离整个屏幕左边的距离,即绝对坐标
getRawY() 获取点击事件距离整个屏幕顶边的距离,即绝对坐标