事件分发机制学习

0x01 事件分发机制中三个重要的函数

 View事件机制有哪几个重要函数?dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()

 流程:触摸事件发生后,如果事件的坐标处于ViewGroup的管辖范围,那么首先调用ViewGroup的dispatchTouchEvent方法,然后其内部调用onInterceptTouchEvent()方法来判断是否拦截该触摸事件,若拦截该事件则调用ViewGroup的onTouchEvent()方法,否则的话,交给其子View的disPatchEvent()处理。

0x02 事件分发的优先级

 同时重写View中的onTouchEvent,设置View的onTouchListener与onClickListener

 首先调用onTouchListener,若返回值为false调用onTouchEvent(返回值为false表示不消耗该事件),再去调用onClick(再onTouchEvent调用父类super.onTouchEvent(event)实现)注意:这里为什么不能直接在onTouchEvent中处理onClick?点击是什么概念?他是down与up的都在同一区域的结合,因此onTouchEvent无法直接判断。

 总结:优先级顺序:onTouchListener>onTouchEvent>onClick

0x03 事件回传过程

  • 如果View只消耗down事件,而不消耗其他事件,那么其他事件不会回传给ViewGroup,而是默默的消逝掉。我们知道,一旦消耗down时间,接下来的该系列所有的事件都会交给这个View,因此,如果不处理down以外的事件,这些事件就会被“遗弃”。
  • 如果ViewGroup决定拦截,那么这个系列事件都只能由它处理,并且onInterceptTouchEvent不会再被调用。
  • 某个View,在onTouchEvent中,如果针对最开始的down事件都返回false,那么接下来的事件系列都不会交给这个View
  • ViewGroup默认不拦截事件,即onInterceptTouchEvent默认返回false
  • ViewonTouchEvent默认返回false,即不消耗事件。
  • View没有onInterceptTouchEvent方法。

  参考自:http://blog.csdn.net/huachao1001/article/details/51766225

 http://www.jianshu.com/p/e99b5e8bd67b

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android先生

可能是讲解Android事件分发最好的文章

我几乎看过国内讲解Android事件分发的所有文章,但遗憾的是都没有这篇讲的好,原因有二:它阐明了具体的事件分发机制的设计意图,让人既知其然,又知其所以然;它没...

10820
来自专栏everhad

View事件分发

NOTE: 笔记,碎片式内容 控件 App界面的开主要就是使用View,或者称为控件。View既绘制内容又响应输入,输入事件主要就是触摸事件。 ViewTree...

28860
来自专栏潇涧技术专栏

Android Universal Image Loader

最近在阅读Coding的安卓客户端源码,因为该源码的图片加载库使用的是universal-image-loader,我以前也使用过,但是没总结过,所以这次好好研...

8820
来自专栏中国Android研究院

正确使用IntentService的姿势

在开发安卓应用的过程中,我们经常需要这样的场景:希望APP在不影响当前用户的操作的前提下,在后台默默的做一些任务。比如:静默的下载文件或者上传数据。我们一般会考...

16120
来自专栏everhad

札记:android手势识别,MotionEvent

摘要 本文是手势识别输入事件处理的完整学习记录。内容包括输入事件InputEvent响应方式,触摸事件MotionEvent的概念和使用,触摸事件的动作分类、多...

39870
来自专栏张高兴的博客

张高兴的 Xamarin.Android 学习笔记:(三)活动生命周期

383110
来自专栏Samego开发资源

简单快捷的退出APP应用

19370
来自专栏懒人开发

dispatchTouchEvent事件分发浅析(三)点击执行顺序

上一篇,我们大体理解了分发的过程 理解了在 dispatchTouchEvent 和 onTouchEvent 的过程中 对应的顺序 还有 View 和 V...

12120
来自专栏项勇

笔记13 | 练习Volley(二)加载网络图片的三种方法

14140
来自专栏Samego开发资源

Android车轮之图片加载框架Android-Universal-Image-Loader

16250

扫码关注云+社区

领取腾讯云代金券