2011.06.23——— android 事件处理机制
参考:
http://blog.csdn.net/ddna/archive/2010/04/11/5473293.aspx
http://www.cnblogs.com/rocky_yi/archive/2011/01/21/1941522.html#
http://chroya.iteye.com/blog/668297
http://www.blogjava.net/lzqdiy/archive/2011/05/08/349794.html
由于onInterceptTouchEvent()的机制比较复杂,上面的说明写的也比较复杂,总结一下,基本的规则是:
1. down事件首先会传递到onInterceptTouchEvent()方法
2. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理。
3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。
4. 如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理。
5. 如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理。
2013-10-17更新:
http://www.cnblogs.com/-OYK/archive/2012/02/06/2340467.html
先说下事件传递的两种方式:
隧道方式:从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递。
冒泡方式:从最内层子元素依次往外传递直到根元素或在中间某一元素中由于某一条件停止传递。
Android中跟Touch事件有关的事件有三个:
public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view(可以是自己)。
public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递。
public boolean onTouchEvent(MotionEvent event): Touch事件处理函数。
Touch事件传递过程中经过的元素都是一个View,但是事件处理的最外层的元素却不是View,除下跟Window有关的事件,当一个 Touch事件发生的时候,会首先调用当前Activity的dispatchTouchEvent函数,然后才将事件传递至下层的View元素。当 dispatchTouchEvent经过一个View往下传递的时候,如果这个View是一个ViewGroup,会调用其 onInterceptTouchEvent函数,这个函数表示是否拦截Touch事件,如果这个函数返回true,表示这个ViewGroup拦截了事 件的传递,Touch事件不会再往下传递给它的子View,而是由它处理,所以会调用它的onTouchEvent函数,如果在传递的过程中没有 ViewGroup拦截事件,即经过的所有ViewGroup都返回false,那么事件最终会传递至最内层的View,一般是一个Widget,当然也 可以是一ViewGroup(其内部不包含任何元素),如果最后事件传递到一View(非ViewGroup),那么会首先调用这个View的 onTouchListener(如果设置了的话),如果onTouchListener返回false则继续调用View的 onTouchEvent(默认返回true),如果最后事件传递到一ViewGroup(无子View),会调用它的onTouchEvent函数,默 认返回false。
分享到:
相关推荐
基于因子分析的我国A股上市...争力评价——以医药企业为例_张澳.caj
微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+...
2020.4.11-措施项目——模板工程量计算规则
python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目...
python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ...
大创项目——区块链追溯系统.zip大创项目——区块链追溯系统.zip大创项目——区块链追溯系统.zip大创项目——区块链追溯系统.zip大创项目——区块链追溯系统.zip大创项目——区块链追溯系统.zip大创项目——区块链...
1,安装说明.txt ——————————安装手册 2,jdk-170.tar.gz ——————————JDK1.7deb包 3,switch_java.sh -------------------------java其它版本切换 4,check_java.sh———————————版本...
Geomagic.Studio.2012软件,由于太大,分成八个压缩包以及一个其他文件包。 此文件为part5
microsoftrootcertificateauthority2011.cer - 教程详情https://blog.csdn.net/Dream_Weave/article/details/125408661
Android support.v7包
matlab课程设计——调幅广播系统的仿真设计 完整版.docxmatlab课程设计——调幅广播系统的仿真设计 完整版.docxmatlab课程设计——调幅广播系统的仿真设计 完整版.docxmatlab课程设计——调幅广播系统的仿真设计 ...
4. **事件处理和回调**:源代码中可以看到各种事件处理逻辑,例如点击事件、改变事件等,以及如何通过事件驱动编程来响应用户操作。 5. **国际化和本地化**:DevExpress支持多语言环境,源代码会展示如何实现本地化...
Android中文翻译组——Android中文API合集(4).chm
有偏技术进步、要素配置扭曲...发展——基于技术一致性视角_蔺鹏 (1).caj
基于FLO-2D的泥石流灾...评价——以麦多沟泥石流为例_李宝幸.caj
5. **事件处理机制**:介绍ASP.NET中控件事件的工作原理,包括客户端事件和服务器端事件,以及如何编写事件处理程序。 6. **数据绑定**:讲述如何将数据源(如数据库)与Web控件绑定,以展示和操作数据,如GridView...
分享的图书,有关Java SE 7 SDK标准的书,全英文。相应章节: Chapter 1. Introducing the Basics of Java Chapter 2. Applying Data Types in Java Programming Chapter 3....Chapter 4....Chapter 5....
在Android系统中,APK是应用程序的安装包,它包含了所有必要的代码、资源和配置文件。为了让用户能够从非Google Play商店来源安装APK,并确保其安全性和完整性,开发者需要对APK进行签名。签名过程涉及到一系列的...