当前位置 : IT培训网 > 移动开发 > android > Android坐标系、视图坐标系与触控事件

Android坐标系、视图坐标系与触控事件

时间:2016-10-13 15:31:21  来源:Android培训网  作者:IT培训网  已有:名学员访问该课程
Android 的坐标系:在Android中,将屏幕左上角的定点座位Android坐标系的原点,从这个点向右是X轴得正方向,这个点向下为Y轴正方向

本文由IT培训网编辑

一. Android 的坐标系:

在Android中,将屏幕左上角的定点座位Android坐标系的原点,从这个点向右是X轴得正方向,这个点向下为Y轴正方向:

 

Android坐标系、视图坐标系与触控事件_www.itpxw.cn

 

Android坐标系.png

系统提供了 getLocationOnScreen(intlocation[]) 这样的方法来获取Android 坐标系中 点的位置 ,即该视视图左上角在Android坐标系中的坐标,另外在触控事件中使用 getRawX().getRawY() 方法所获取得坐标同样是Android坐标系中的坐标:

getLocationOnScreen(intlocation[])方法:

private int[] locationPoint = new int[2];

//省略.....

view.getLocationOnScreen(locationPoint);

//省略.....

sb.append("length :" + locationPoint.length + " -- ");

for (int i : locationPoint) {

sb.append(i + "--");

}

//结果:length : 0 -- 152 -- ``

//locationPoint[0]:为x该View在x轴得坐标,locationPoint=[1]为该View在Y轴的坐标

在触控事件中使用getRawX() 与getRawY()方法:

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

switch (ev.getAction()){

case MotionEvent.ACTION_DOWN:

downX = ev.getRawX();

downY = ev.getRawY();

break;

}

二.视图坐标系:

Android中还有一个视图坐标系,让是描述子视图在父视图中的位置。与Android坐标系比较相似的, 视图坐标系是以子视图所在的父视图左上角为原点,该原点向右为X轴正方向 ,向下为Y轴正方向:

在触控事件中,可使用 getX(), getY() 方法获取得坐标即为视图坐标系中的坐标

 

Android坐标系、视图坐标系与触控事件_www.itpxw.cn

 

视图坐标2.png

三.触控事件 MotionEvent:

触控事件,见明知意;下面是MotionEvent中封装了一些常用的事件常量:

//触控动作取消

public static final int ACTION_CANCEL = 3;

//单点触控按下动作

public static final int ACTION_DOWN = 0;

//触摸点移动动作

public static final int ACTION_MOVE = 2;

//触摸动作超出边界

public static final int ACTION_OUTSIDE = 4;

/** @deprecated */

@Deprecated

public static final int ACTION_POINTER_1_DOWN = 5;//多点触控按下动作

/** @deprecated */

@Deprecated

public static final int ACTION_POINTER_1_UP = 6;//多点触控抬起动作

/** @deprecated */

@Deprecated

public static final int ACTION_POINTER_2_DOWN = 261;

/** @deprecated */

@Deprecated

public static final int ACTION_POINTER_2_UP = 262;

通常会在onTouchEvent(MotionEvent event)或onInterceptTouchEvent(MotionEvent event)方法中通过event.getAction()获取触控事件类型 并进行对应逻辑处理

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

switch (ev.getAction()){

case MotionEvent.ACTION_DOWN:

downX = ev.getRawX();

break;

case MotionEvent.ACTION_MOVE:

moveX = ev.getRawX();

break;

default:

break;

在触控事件时经常需要 获取坐标值与相对距离 等 进行了一下总结:

 

Android坐标系、视图坐标系与触控事件_www.itpxw.cn

 

View坐标与距离3.png

View获取坐标的方法:

getTop() : 获取该View顶边框到其 父布局顶边 的距离;

getLeft() : 获取该View左边到框其 父布局左边 的距离;

getRight() : 获取该View右边框到 父布局左边 的距离 ;

getBottom : 获取该View底部边框到 父布局顶部边框 的距离;

MotionEvent 获取坐标的方法:

getX() : 获取事件点击位置 所在控件左边 的距离;

getY() : 获取事件点击位置 所在控件顶边 的距离;

getRawX() : 获取事件点击位置距离 屏幕左边 的距离;

getRawY() : 获取事件点击位置距离 屏幕顶边 的距离;

IT培训网是IT培训网教育旗下培训网站。IT培训网依托中国互联网行业蓬勃发展优势,为中国的软件开发学习者和IT从业人员提供培训学校、编程学习、经验交流、咨询解答等服务,帮助更多喜爱编程的人员实现自己的IT梦想。
 
顶一下
(0)
0%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容