Android在MotionEvent里定义了一系列的手势事件

其中包括:

MotionEvent.ACTION_DOWN:当屏幕检测到第一个触点按下之后就会触发到这个事件。

MotionEvent.ACTION_MOVE:当触点在屏幕上移动时触发,触点在屏幕上停留也是会触发的,主要是由于它的灵敏度很高,而我们的手指又不可能完全静止(即使我们感觉不到移动,但其实我们的手指也在不停地抖动)。

MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有触点处于按下的状态的时候,再有新的触点被按下时触发。

MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)触发。

MotionEvent.ACTION_UP:当最后一个触点松开时被触发。

MotionEvent.ACTION_SCROLL:非触摸滚动,主要是由鼠标、滚轮、轨迹球触发。

MotionEvent.ACTION_CANCEL:不是由用户直接触发,有系统再需要的时候触发,例如当父view通过使函数onInterceptTouchEvent()返回true,从子view拿回处理事件的控制权是,就会给子view发一个ACTION_CANCEL事件,这里了view就再也不会收到事件了。可以将其视为ACTION_UP事件对待。

onInterceptTouchEvent()函数与onTouchEvent()的区别:

1、onInterceptTouchEvent()是用于处理事件(类似于预处理,当然也可以不处理)并改变事件的传递方向,也就是决定是否允许Touch事件继续向下(子view)传递,一但返回True(代表事件在当前的viewGroup中会被处理),则向下传递之路被截断(所有子view将没有机会参与Touch事件),同时把事件传递给当前的view的onTouchEvent()处理;返回false,则把事件交给子view的onInterceptTouchEvent()

2、onTouchEvent()用于处理事件,返回值决定当前view是否消费(consume)了这个事件,也就是说在当前view在处理完Touch事件后,是否还允许Touch事件继续向上(父view)传递,一但返回True,则父view不用操心自己来处理Touch事件。返回true,则向上传递给父view(注:可能你会觉得是否消费了有关系吗,反正我已经针对事件编写了处理代码?答案是有区别!比如ACTION_MOVE或者ACTION_UP发生的前提是一定曾经发生了ACTION_DOWN,如果你没有消费ACTION_DOWN,那么系统会认为ACTION_DOWN没有发生过,所以ACTION_MOVE或者ACTION_UP就不能被捕获。)

英文参考:

An ACTION_CANCEL happens when a parent view takes over control of one of its children views.

Take a look at the documentation around ViewGroup.onInterceptTouchEvent(MotionEvent) method. From the link:

  1. You will receive the down event here.
  2. The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
  3. For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
  4. If you return true from here, you will not receive any following events: the target view will receive the same event but with the action ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here

MotionEvent 事件解读相关推荐

  1. Oracle-等待事件解读

    概述 Oracle-OLAP和OLTP解读 Oracle-index索引解读 Oracle-分区表解读 Oracle-锁解读 Oracle-等待事件解读 Oracle-procedure/cursor ...

  2. MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序

    onInterceptTouchEvent()用于处理事件并改变事件的传递方向.处理事件这个不用说了,你在函数内部编写代码处理就可以了.而决定传递方向的是返回值,返回为false时事件会传递给子控件的 ...

  3. Android MotionEvent事件分发介绍与流程总结(伪代码形式)

        如果要一句话简单总结的话,就是:     找到一个按照规则"消耗"掉MotionEvent.ACTION_DOWN事件的View,默认情况下,后继会把整个事件流都交给它来处 ...

  4. 模拟MotionEvent事件

    这两天在做模块的单元测试,需要模拟触屏事件,手势操作,下面针对MotionEvent做下代码记录: 下面的事件注入都会调用一个函数: Instrumentation mInstrumentation; ...

  5. 最详细的JavaScript和事件解读

    与浏览器进行交互的时候浏览器就会触发各种事件.比如当我们打开某一个网页的时候,浏览器加载完成了这个网页,就会触发一个 load 事件:当我们点击页面中的某一个"地方",浏览器就会在 ...

  6. 浏览器工作原理(四):浏览器事件解读

    参考:https://zhuanlan.zhihu.com/p/23059366 一.事件的监听 事件监听的三种方式: 1.html内联属性:<button οnclick="btnC ...

  7. oracle事件号,oracle8管理员账号密码Oracle-等待事件解读

    概述 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件 ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. ...

  8. Facebook数据泄露事件解读

    " 本月中旬,Facebook数据泄露丑闻爆发,上周一Facebook股价更是大跌7%,市值蒸发360多亿美元,CEO扎克伯格也因此身家缩水,跌出福布斯富豪榜前五位.与此同时,欧盟.英国纷纷 ...

  9. GridView(网格视图)+MotionEvent(触控事件)实现可以拖动排序的网格图

    1.一触碰,就回调onInterceptTouchEvent(MotionEvent ev)事件,每次的触碰都只回调一次,接着只要还没有放手,就一直回调onTouchEvent(MotionEvent ...

最新文章

  1. html frameset
  2. 安徽大学计算机科学与技术复试线,安徽大学计算机考研报录比及分数线
  3. using IDisposable
  4. 微信小程序 网络请求之设置合法域名
  5. 从零开始学习Hadoop--第2章 第一个MapReduce程序
  6. 什么是 Freeview Play
  7. vue-cli3项目中全局引入less sass文件 以及使用本地图片在不同地方规则
  8. spring boot 动态代理
  9. angular $element.html 数据展示不出来,element-ui Table 组件循环列表数据不显示?
  10. Python ADF 单位根检验 如何查看结果
  11. Mysql 数据库(4)
  12. 批量缩小多张图片尺寸,保持图片清晰无损
  13. iOS 自定义转场动画
  14. git revert 之后 找回原来的代码
  15. 神经网络的数学表达式,神经网络的数学理论
  16. Hexo博客搭建之Next主题添加搜索服务
  17. mt7620a上带机量的提高(一)
  18. 脊回归(Ridge Regression)
  19. 自学成才,PHP从入门到精通学习路线规划
  20. 小游戏进入增长快车道,行业变现模式分析

热门文章

  1. 二叉树非递归dfs——简单思路搞定前中后序遍历
  2. 异常:getInputStream() has already been called for this request
  3. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...
  4. 通过IDEA进行class文件代码反编译
  5. uniapp swiper 添加视频
  6. 微信聊天记录长图切割
  7. 深入理解计算机系统_00
  8. html修改img图片颜色,教你如何用CSS修改图片颜色
  9. 数组的定义,一维数组,二维数组与变长数组
  10. 分析家C语言接口软件,大智慧分析家 c语言 编程接口