关于android中的事件分发机制,点击事件分发机制详解

一,什么是事件分发机制:
一个动作从手指落下到手指抬起的整个过程,这个事件(动作)在程序中所经历的顺序,或者说发放的过程,或者说程序处理的过程。

 整体有一句话概述:隧道式向下(内)分发,冒泡式向上处理,


二,事件分发机制涉及到的三个基本的方法及调用关系:
1,public boolean dispatchTouchEvent(MotionEvent ev)
方法描述:
此方法是隧道式分发。
如果此方法返回的是系统默认的 super.dispatchTouchEvent(ev)或者false时,会调用 onInterceptTouchEvent方法判断是否拦截。


如果返回的是true会调用onTouchEvent进行消费。不再向下传递。


2,public boolean onInterceptTouchEvent(MotionEvent ev)  
方法描述:

如果此方法的返回值是默认的super.onInterceptTouchEvent(ev)
那么将会调用ontouch方法处理,不会被拦截

如果返回值是false,那么将会放行并且调用子控件的dispatchTouchEvent交给子类去处理。

如果此方法的返回值是true,那么将会调用onTouchEvent来处理事件。并且事件将会被拦截。



3,public boolean onTouchEvent(MotionEvent ev)
方法描述:
此方法的传递很特殊,是向上传递的,又叫做冒泡式响应。
如果此方法返回的是false,或者是默认的super.onTouchEvent(ev) 
那么将会向上传递给上级的onTouchEvent事件,如果上级也返回false,那么事件将会消失,并且而且接收不到下一次事件。
如果返回的是true,则不再向上传递。接收并消费该事件。


如图所示,图片详细描述了一个点击事件从外向内进行分发的整个过程。先是隧道式分发,然后冒泡式响应。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值