摘要:下事件分发和消费事件前言中与事件相关的方法包括能够响应的空间包括。事件分析事件分发事件发生时的方法会以隧道方式从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递将事件传递给最外层的
Android下Touch事件分发和消费事件 前言
Android中与touch事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够
响应的空间包括:ViewGroup、View、Activity。方法与控件的对应关系如下表所示:
Touch事件相关方法 | 方法功能 | View | ViewGroup | Activity |
---|---|---|---|---|
public boolean dispatchTouchEvent(MotionEvent ev) | 事件分发 | YES | YES | YES |
public boolean onInterceptTouchEvent(MotionEvent ev) | 事件拦截 | NO | YES | NO |
public boolean onTouchEvent(MotionEvent ev) | 事件响应 | YES | YES | YES |
从这张表中可以看出ViewGroup对与Touch事件相关的三个方法均能响应,而Activity和View对于onInterceptTouchEvent(MotionEvent ev)也就是事件拦截不进行响应。`另外需要注意的是View对dispatchTouchEvent(MotionEvent ev)响应的前提是可以向该View中添加子View,如果当前的View已经是一个最小单元View(比如TextView),那么无法向这个最小View中添加子View,也就无法向子 View 进行事件的分发和拦截,所以它没有 dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev),只有 onTouchEvent(MotionEvent ev)。
Touch事件分析事件分发:public boolean dispatchTouchEvent(MotionEvent ev)
Touch事件发生时Activity的dispatchTouchEvent(MotionEvent ev)方法会以隧道方式(从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递)将事件传递给最外层View的dispatchTouchEvent(MotionEvent ev)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70538.html
摘要:事件被上层拦截时触发。事件返回时直接指向了父的这一部分是不合理的,实际上它仅仅是给了父的一个返回值,父根据返回值来调用自身的。是根据的返回值来确定是调用子的还是自身的,并没有将调用交给。 原文链接 简简单单讲清楚android事件分发。 什么叫事件分发机制 ? 事件分发是:当发生了一个事件时,在屏幕上找到一个合适的控件来处理这个事件的过程。 因为一个界面上控件如此之多,发生一个事件后总...
阅读 1979·2021-09-26 10:19
阅读 3249·2021-09-24 10:25
阅读 1623·2019-12-27 11:39
阅读 1918·2019-08-30 15:43
阅读 662·2019-08-29 16:08
阅读 3503·2019-08-29 16:07
阅读 901·2019-08-26 11:30
阅读 1269·2019-08-26 10:41