触摸事件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. boost库checked_delete的使用

    在查看boost库时发现一个小文件checked_delete.hpp里面几个小函数,它的作用用很简短的话来说:防止未定义的行为造成delete时的内存泄露.实现如下: template<cla ...

  2. charset=iso-8859-1

    今天群里有人在问, 求解:charset="ISO-8859-1"是什么意思 其实我也不大懂,然后就去翻阅了下资料.科普开始: 网页制作中遇到的编码,乱码问题之一:charset= ...

  3. Runtime常用的几个应用场景

    Runtime常见的几个应用场景. Runtime常见应用场景 具体应用拦截系统自带的方法调用(Method Swizzling黑魔法) 实现给分类增加属性 实现字典的模型和自动转换 JSPatch替 ...

  4. 关于Django中路由层(URL-conf)

    关于路由层 路由层其实就是项目中urls.py那个文件,那里面存放着url和视图函数的对应关系它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来 ...

  5. Xshell添加快捷按钮

    1.打开xshell,点击[查看],勾[快速命令]: 2.点击xshell右下角[三],选择[添加按钮],在弹出框的“标签栏”和“文本”栏分别输入名称和命令,最后点击[确定]即可.

  6. Hello World 十大秘密

    #include <stdio.h> int main(int argc, char* argv[], char* env[]) { printf("Hello World\n& ...

  7. hive中解析json数组

    -- hive中解析json数组 select t1.status ,substr(ss.col,,) as col ,t3.evcId ,t3.evcLicense ,t3.evcAddress , ...

  8. java TopK算法

    现有一亿个数据,要求从其中找出最小的一万个数,希望所需的时间和空间最小,也就是所谓的topK问题 TopK问题就是从海量的数据中取最大(或最小的)的K个数. TopK问题其实是有线性时间复杂度的解的, ...

  9. set与map

    set /*set里面没有相同的元素 所以可以用于数组去重*/ //内部去重用的是=== 对象不等 但是 NaN等 //其本身是构造函数 let s=new Set([1,2,{},{},3,4,Na ...

  10. Mockjs详细使用说明

    Mock.js 是一款前端开发中拦截Ajax请求再生成随机数据响应的工具.可以用来模拟服务器响应. 优点是非常简单方便, 无侵入性, 基本覆盖常用的接口数据类型. 在我们的生产实际中,后端的接口往往是 ...