View的事件分发流程

  如果一个View(eg Button)触发Touch事件,Touch事件首先会传入到该View的dispatchTouchEvent()方法里。

View事件的分发流程图
dispatchTouchEvent()方法表示是否进行事件分发
返回值: true表示继续事件分发 ;false表示终止事件分发
onTouch()方法[View源码的dispatchTouchEvent()里的第三个if判断],如下面的截图:
最后一个与符号li.mOnTouchListener.onTouch(this,event)
该方法表示事件是否被消费
返回值:true表示事件已经被消费; false表示事件未消费
onTouchEvent()方法主要处理点击事件onClick()方法

言外之意

从上面的事件分发流程图可以得到的信息:
onTouch()方法先于onClick()方法执行,如果将onTouch()方法的返回值改为true,那么onClick()方法就不会执行。

总结

简单的说View处理Touch事件的总体流程:
dispatchTouchEvent()—>OnTouchListener.OnTouch()—>onTouchEvent()—>onClick()
## 参考 ##
http://blog.csdn.net/guolin_blog/article/details/9097463
http://blog.csdn.net/lfdfhl/article/details/51559847

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值