1,Activity,ViewGroup,View的关系

2,触摸事件

3,传递事件时的重要函数

4,事件传递流程参考图

5,其它参考资料

1,Activity,ViewGroup,View的关系

  本文按层次比喻,ViewGroup与其中的View的关系不是父子,而是上下层。父子描述继承关系更准确些。

  最下层是Activity,Activity上面是一系列ViewGroup,ViewGroup上面是View。

  事件总是从Activity向上层传递。

2,触摸事件

  一个手指在屏幕上触摸动作产生一组事件,其中常见的是 ACTION_DOWN,ACTION_MOVE...MOVE…MOVE、最后ACTION_UP。每一个事件都是从下层向上层传递。

  单手指操作:ACTION_DOWN---ACTION_MOVE----ACTION_UP

  多手指操作:ACTION_DOWN---ACTION_POINTER_DOWN---ACTION_MOVE--ACTION_POINTER_UP---ACTION_UP.

3,传递事件时的重要函数

▐ 事件分发:public boolean dispatchTouchEvent(MotionEvent ev)

▐ 事件拦截:public boolean onInterceptTouchEvent(MotionEvent ev)

▐ 事件响应:public boolean onTouchEvent(MotionEvent ev)

它们在同一层调用顺序是 dispatchTouchEvent--->onInterceptTouchEvent --->onTouchEvent

只有ViewGroup有onInterceptTouchEvent方法,如下表:

方法 Activity

ViewGroup

View
public boolean dispatchTouchEvent(MotionEvent ev)
public boolean onInterceptTouchEvent(MotionEvent ev) 
public boolean onTouchEvent(MotionEvent ev)

它们的返回值含义或功能表如下:

  方法\返值 true false super.同名函数
Activity dispatchTouchEvent 消费 消费 不消费,续传
onTouchEvent 消费 消费 消费
ViewGroup dispatchTouchEvent 消费

不消费,回溯

不消费,续传

onInterceptTouchEvent

拦截

不消费,续传 不消费,续传
onTouchEvent 

消费

不消费,回溯 不消费,回溯
View dispatchTouchEvent 消费 不消费,回溯 不消费,续传
onTouchEvent 消费 不消费,回溯 不消费,回溯

4,事件传递流程参考图

图中:

  • 每条泳道是不同的处理类,
  • 整个图是U型,绿色粗箭头。事件以Activity开始,也以它结束(所有人都没处理时,最后就由activity处理)。
  • 细实箭头是返回true,虚线是返回false,粗线是返回super.XX同名方法。
  • super.xxx是保证事件能继续传递的调用。是U型图的主线。
  • dispatchTouchEvent、onTouchEvent返回true表示处理了事件。返回false都表示把事件传回前一层。

  • 当down在某处被消费(返回true)后,后续的move,up就以短路径过去,不是按原路径。

5,其它参考资料

 点击下载 PRE_andevcon_mastering-the-android-touch-system.pdf

Android Touch(1)事件的传递流程(*)的更多相关文章

  1. Android webkit 事件传递流程详解

    前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题.所以索性研究了一下keyevent 事件的传递流程. frameworks 层 keyevent ...

  2. Android webkit 事件传递流程通道分析

    前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题.所以索性研究了一下keyevent 事件的传递流程. frameworks 层 keyevent ...

  3. Android Touch事件之二:dispatchTouchEvent()和onTouchEvent()篇

    2015-12-01 15:06:14 Android Touch事件第一篇:Touch事件在父ViewGroup和子View之间的传递简单分析了事件的传递流程,这次深入了解下dispatchTouc ...

  4. android中的事件传递和处理机制

    一直以来,都被android中的事件传递和处理机制深深的困扰!今天特意来好好的探讨一下.现在的感觉是,只要你理解到位,其实事件的 传递和处理机制并没有想象中的那么难.总之,不要自己打击自己,要相信自己 ...

  5. Android webkit keyevent 事件传递过程

    前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题.所以索性研究了一下keyevent 事件的传递流程. frameworks 层 keyevent ...

  6. Android Touch事件传递机制 二:单纯的(伪生命周期)

    转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...

  7. Android touch 事件传递机制

    前言: (1)在自定义view的时候经常会遇到事件拦截处理,比如在侧滑菜单的时候,我们希望在侧滑菜单里面有listview控件,但是我们希望既能左右滑动又能上下滑动,这个时候就需要对触摸的touch事 ...

  8. Android touch事件的派发流程

    Android TouchEvent事件传递机制 通俗易懂,能够了解Touch事件派发的基本流程. Android中的dispatchTouchEvent().onInterceptTouchEven ...

  9. Android Touch事件传递机制解析 (推荐)

    最近新闻列表里的下拉 down up  move 等等让我十分头疼 ,无意间看到了一篇非常不错的帖子,转载如下: 开篇语:最近程序在做一个小效果,要用到touch,结果整得云里面雾里的,干脆就好好把a ...

随机推荐

  1. Leetcode#103 Binary Tree Zigzag Level Order Traversal

    原题地址 基本数据结构操作,二叉树的层次遍历. 代码: vector<vector<int> > zigzagLevelOrder(TreeNode *root) { vect ...

  2. asp.net中实现群发邮件功能

    前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用 ...

  3. Environment.SpecialFolder.CommonApplicationData

    private void button1_Click(object sender, EventArgs e) { var path=Environment.GetFolderPath(Environm ...

  4. 使用ajax技术无刷新动态调用股票信息

    新浪的财金频道一直感觉做得很好.但由于最近网速慢的缘故,查看股票信息时网页老是打不开.这几天一直在研究ajax,于是用jquery自己做了一个自动读取新浪股票实时数据的页面. <html> ...

  5. CSS绝对定位和相对定位 position: absolute/relative

    absolute(绝对定位): 会把对象拖离HTML文档流,并通过top, left, right, bottom确定对象的具体位置,这个四个位置属性至少要设置一个,否则无法激活对象的absolute ...

  6. SQL TRY CATCH

    begin try select 1/0end trybegin catch select error_number() as 'number', error_line() as 'line', er ...

  7. Unity3D开发Windows Store应用程序 注意事项

    原地址:http://blog.csdn.net/jbjwpzyl3611421/article/details/12704491 针对最近在移植window store项目中遇到的问题,我整理了官方 ...

  8. c# 与flash通信简介

    许久不曾写随笔,即使许久的怠惰,是该抬抬头,看看天了. 公司项目,项目要求是在winForm端先获取下位机的肌电信号采集数据,然后根据这些数据的变化来控制flash游戏,这样一些患者在flash游戏中 ...

  9. ZOJ2929 Penalty Kick(概率)

    题目挺水的,但由于其独特的阅读量比赛的时候没发现这道水题,在此做一下翻译,如果有人搜到这翻译的话有帮助的话自然最好啦. 中国队平局进入最后的点球决胜局,首先抛硬币决定谁先罚球,然后先是罚五球,如果罚的 ...

  10. VMware 11 设置U盘启动,总是找不到physicalDrive1

    问题:VMware 11 设置U盘启动,总是找不到physicalDrive1 先说一下U盘启动的设置:如图 解决方案: 有两个服务没有进行启动,VMware USB Arbitration Serv ...