触摸事件MotionEvent在用户交互中,占着非常重要的地位.首先,来看看MotionEvent中封装的一些常用的事件常量,它定义了触摸事件的不同类型.

  1.单点触摸按下动作

  public static final int ACTION_DOWN = 0;

  2.单点触摸抬起动作

  public static final int ACTION_UP = 1;

  3.触摸点移动动作

  public static final int ACTION_MOVE = 2;

  4.触摸动作取消

  public static final int ACTION_CANCEL = 3;

  5.触摸动作超出边界

  public static final int ACTION_OUTSIDE = 4;

  6.多点触摸按下动作

  public static final int ACTION_POINTER_DOWN = 5;

  7.多点离开动作

  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;

    }

    return true;

  }

  在不涉及多点操作情况下,通常可以使用以上代码来完成触摸事件的监听,不过这里只是一个代码模板,实际开发过程中会用到复杂的逻辑的触摸事件.

  在Android中,系统提供了非常多的方法来获取坐标值,相对距离等.方法丰富固然好,但也给初学者带来了困惑,不知道在实际情况下采用什么方法,如下总结了一些API,结合坐标系来看看该如何使用它们

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

  * View提供的获取坐标方法

  getTop():获取到的是View本身的顶边到其父布局顶边的距离

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

  getRight():获取到的是View自身的右边到其父布局左边的距离

  getBottom():获取到的是View自身的底部到其父布局顶边的距离

  *MotionEvent提供的方法

  getX():获取点击事件距离控件左边的距离,即视图坐标

  getY():获取点击事件距离控件顶边的距离,即视图坐标

  getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标

  getRawY():获取点击事件距离整个屏幕顶边的距离,即绝对坐标

Android触摸事件MotionEvent详解的更多相关文章

  1. 给 Android 开发者的 RxJava 详解

    我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...

  2. [转]ANDROID L——Material Design详解(动画篇)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 转自:http://blog.csdn.net/a396901990/article/de ...

  3. Android:TextView跑马灯-详解

    Android:TextView跑马灯_详解 引言: TextView之所以需要跑马灯,是由于文字太长,或者是吸引眼球. 关键代码如下: android:singleLine="true&q ...

  4. Android本地化资源目录详解

    我们可以设想,有两个不同分辨率的手机(320*480和480*800)要使用一些图像资源,为了使图像不失真,就需要为不同分辨率的手机指定不同的图像,为此就需要建立不同的资源目录. 在res目录中建立了 ...

  5. 初识Android触摸事件传递机制

    前言 今天总结的一个知识点是Andorid中View事件传递机制,也是核心知识点,相信很多开发者在面对这个问题时候会觉得困惑,另外,View的另外一个难题滑动冲突,比如在ScrollView中嵌套Li ...

  6. Android触摸事件的应用

    前言 上一篇讲了Android触摸事件的传递机制,具体可以看这里 初识Android触摸事件传递机制.既然知道Android中触摸事件的传递分发,那么它能解决什么样的问题,在我们实际开发中如何应用,这 ...

  7. Xamarin android CardView的使用详解

    android 5.0新增加的一个控件CardView,在support v7兼容包中,意思就是卡片View,虽然可以设置阴影,圆角等等样式,但是我们也可以自己写出来,谷歌工程师之所以出这个,肯定是帮 ...

  8. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github. ...

  9. cocos2dx+lua注册事件函数详解 事件

    coocs2dx 版本 3.1.1 registerScriptTouchHandler             注册触屏事件 registerScriptTapHandler             ...

随机推荐

  1. php屏蔽错误消息

    定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别. 函数语法: error_reporting(report_level) 如果参数 level 未指定,当前报 ...

  2. 各种Helper代码

    1.读取XML文件 /// <summary> /// 读取XML配置文件类 /// </summary> public class XmlHelper { private s ...

  3. java 调用本地应用程序 Java打开(.word,.txt,.pdf)文件

    https://blog.csdn.net/lebron3v/article/details/80741000

  4. windwos-sshfs

    从 http://www.jianshu.com/p/d79901794e3d 转载 目的 最近因为需要在linux虚拟机里进行开发程序,虽然在linux里有超强的编辑器vim,但vim开发html前 ...

  5. Python语言、编译解释、动态库静态库、编译过程、头文件

    学习Python这门语言首先要了解 什么是编译与解释,什么是连接,什么是动态库与静态库, 什么是编译: 编译就是先把高级语言设计的程序翻译成二进制的机器语言,然后CPU直接执行机器码就可以了.一把翻译 ...

  6. C语言中的常用函数_持续更新

    isspace函数: 背景:之前遇到scanf()输入时会把换行符留在输入队列的情况,如果下次要用到getchar(),但是会导致其先返回这个我们不需要的换行符:从而导致不希望出现的行为: 说明:检查 ...

  7. BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP

    Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧 ...

  8. Windows 常见DOS命令

    1. 查看网络连接及路由状况 netstat -a                 查看开启了哪些端口,常用netstat -an netstat -n                  查看端口的网 ...

  9. java thread start到run:C++源码分析

    转:https://hunterzhao.io/post/2018/06/11/hotspot-explore-inside-java-thread-run/ 整体流程 java new Thread ...

  10. 电脑c盘爆满检查与设置

    C盘文件爆满,先检查是那个文件造成的 操作方法:打开文件夹选项,将“隐藏受保护的操作系统文件(推荐)”前的勾选去掉,然后打开系统盘查看是那个文件占用空间大 Hiberfil.sys文件删除方法: 1. ...