以前写 android ,对事件的处理没有太深入,只是简单的 onTouchEvent 就 ok 了,现在写的 UI ,很多自定义组件,父 view 和子 view 都需要接收事件,然后处理。如果不弄明白它的事件传递机制,很难拥有好的用户体验。
Touchevent 中,返回值是 true ,则说明消耗掉了这个事件,返回值是 false ,则没有消耗掉,会继续传递下去,这个是最基本的。
在 View 中跟 Touch 相关的事件有 dispatchTouchEvent , interceptTouchEvnet , onTouchEvent 三种。dispatchTouchEvent 是负责分发事件的,事件从 activity 传递出来之后,最先到达的就是最顶层 view 的dispatchTouchEvent ,然后它进行分发,如果返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。
如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。(我说的一次事件指的是 down 到 up 之间的一系列事件)
我画了个图,见附件。

总结一下,如果这一次事件没有人消耗掉,则系统不会给你下一次事件,因为他会认为你这次的事件阻塞了,没必要给下一次。onTouchEvent如果不消耗的话,会从子view传递到父view。
分享到:
相关推荐
1. **冒泡模型**:事件从最深的节点开始传播,然后逐级向上层节点传递。在HTML DOM中,事件会从目标元素开始,一路向上直到根节点,每个途经的父节点都有机会处理该事件。 2. **捕获模型**:与冒泡模型相反,事件...
1. `QEvent::MouseButtonPress`: 当鼠标按钮被按下时触发,对应的处理函数是`mousePressEvent(QMouseEvent *event)`。 2. `QEvent::MouseButtonRelease`: 当鼠标按钮被释放时触发,对应的处理函数是`...
Android事件处理机制
1. 事件传递链:事件按照View-ViewGroup-Activity的顺序进行传递,由dispatchTouchEvent()方法开始,如果事件未被消费,则向上级组件传递,直至被处理或被抛弃。 2. 触摸事件的处理流程:首先由ViewGroup的...
jquery事件处理。
《北京地铁运营事故处理规则》的出台,标志着北京地铁在安全运营管理方面迈出了重要一步。作为中国的首都,北京地铁系统繁忙且复杂,每日承载着数百万乘客的出行需求。因此,确保地铁运营的安全性是极其重要的。这份...
1. **事件与监听器** - 事件:在Java中,事件是由组件(如按钮、文本框等)生成的,表示用户与这些组件交互的情况。例如,按钮的点击事件。 - 监听器:监听器是实现了特定接口的对象,用于接收并处理这些事件。...
1. 事件发送:窗口对象发送每个摇动及远程控制事件给首响应者进行处理。 2. 首响应者:首响应者是指第一个响应事件的视图对象。 事件类型和子事件类型 每个事件都有其对应的事件类型和子事件类型,可以通过 UIEvent...
### IT故障事件处理报告知识点详解 #### 一、事件背景与描述 - **标题**:“IT故障事件处理报告” - **描述**:本报告详细记录了一次IT故障事件的处理流程,包括事件的发生、影响范围、处理过程以及最终解决方案。...
### QT的事件处理机制 #### 一、概述 在探讨QT的事件处理机制之前,我们需要先理解事件在软件开发中的重要性。事件是程序与用户的交互桥梁,它们能够捕获用户的动作并触发相应的处理逻辑。在图形用户界面(GUI)应用...
质量事故处理制度是企业质量管理中的重要组成部分,旨在规范和预防产品质量问题,确保产品符合行业标准、规范和客户需求,提升企业信誉和市场竞争力。本制度涵盖了质量事故的定义、等级划分、报告、调查和处理等多个...
在IT领域,事件处理编程是一种常见的编程模式,特别是在图形用户界面(GUI)和多线程应用中。这个范例主要关注如何在Java环境下,特别是针对手机应用开发,进行事件处理编程。下面将深入探讨事件处理的基本概念、...
1. **声明事件类型**:首先,你需要在接口或类中声明一个事件类型。例如,可以定义一个名为 `TMyEvent` 的事件类型,它通常是一个指向方法的指针,如 `procedure(Sender: TObject; Args: TEventArgs);`。 2. **定义...
Java GUI事件处理机制是Java应用程序开发中的重要组成部分,主要用于响应用户在图形用户界面中的各种操作。这一机制采用了委托事件模型,使得程序结构清晰,易于扩展。下面将详细讲解这一机制的关键概念、工作流程...
### JavaGUI事件处理详解 #### 一、Java GUI事件处理概览 在Java图形用户界面(GUI)编程中,事件处理是一项核心技能。通过事件处理,我们能够使GUI应用程序响应用户的操作,例如鼠标点击、键盘输入等。Java的事件...
### ASP.NET中的事件处理 #### 一、概述 在ASP.NET框架中,事件处理机制是其核心特性之一,它能够帮助开发者实现与用户交互的功能。本文将深入探讨ASP.NET中的事件处理机制,包括页面生命周期中的关键事件、客户端...
1. **事件源(Event Source)**:这是触发事件的对象,比如按钮、菜单等。 2. **事件(Event)**:封装了特定事件的信息,例如鼠标点击事件、键盘按键事件等。 3. **事件监听器(Event Listener)**:实现特定事件接口的...
本文将结合《道路交通事故处理PPT.pptx》的概要内容,详细探讨道路交通事故处理的各个方面。 首先,道路交通事故概述是理解整个处理流程的基础。道路交通事故通常是指由于交通参与者违反交通规则的行为,导致的人员...
1. 软键盘事件处理: 软键盘事件通常是通过EditText等可输入控件的TextWatcher监听器来捕获的。TextWatcher提供了三个关键方法:beforeTextChanged、onTextChanged和afterTextChanged,分别在文本改变前、改变中和...
1. **事件源(Event Source)**:在Java中,任何可以触发事件的对象称为事件源。例如,按钮、菜单、键盘或鼠标等。这些对象都实现了`EventListener`接口或其子接口,如`ActionListener`、`MouseListener`等。 2. **...