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. poj 1113 Wall

    题目链接:http://poj.org/problem?id=1113 题目大意:给出点集和一个长度L,要求用最短长度的围墙把所有点集围住,并且围墙每一处距离所有点的距离最少为L,求围墙的长度. 解法 ...

  2. 引擎设计跟踪(九.9) 文件包系统(Game Package System)

    很早之前,闪现过写文件包系统的想法, 但是觉得还没有到时候. 由于目前工作上在做android ndk开发, 所以业余时间趁热做了android的移植, 因为android ndk提供的mountab ...

  3. js弹出图片原图效果

    1.将js方法独立出来common.js function openwin(src){ var basePath = document.getElementById("basePath&qu ...

  4. PHP-Java-Bridge的使用(平安银行支付功能专版)

    去年做平安银行的时候,用到了PHP-Java-Bridge,后来写了一篇博客记录使用PHP-Java-Bridge的一些心得(连接:http://my.oschina.net/kenblog/blog ...

  5. 从底层理解Python的执行

    摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追 ...

  6. Jsp helloWorld

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEnco ...

  7. POJ 3281

    Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8577   Accepted: 3991 Descriptio ...

  8. POJ 2101

    #include <iostream> #include <algorithm> #include <cmath> using namespace std; int ...

  9. Eclipse环境下配置spket中ExtJS提示

    使用eclipse编写extjs时,一定会用到spket这个插件,spket可以单独当作ide使用,也可以当作eclipse插件使用,我这里是当作eclipse的插件使用的,下面来一步步图解说明如何配 ...

  10. POJ 3335 Rotating Scoreboard(半平面交求多边形核)

    题目链接 题意 : 给你一个多边形,问你在多边形内部是否存在这样的点,使得这个点能够看到任何在多边形边界上的点. 思路 : 半平面交求多边形内核. 半平面交资料 关于求多边形内核的算法 什么是多边形的 ...