Android Touch事件分发与消费机制

1.事件分发:dispatchTouchEvent(MotionEvent ev)

由父View向子View传递事件。

return true,事件会分发给当前View,并由dispatchTouchEvent()进行消费,同时事件停止传递。

return false,将事件返回给Activity或者父View的onTouchEvent()进行消费。

super.dispatchTouchEvent(),事件会分发给当前View的onInterceptTouchEvent()方法。

2.事件拦截:onInterceptTouchEvent(MotionEvent ev)

事件由当前View的dispatchTouchEvent()进行分发。

return true,拦截事件,并交由当前View的onTouchEvent处理。

return false,不拦截事件,当前View的事件会被传递到下层子View上,再由子View的dispatchTouchEvent()来进行事件分发。

super.onInterceptTouchEvent(),同return false。


3.事件响应:onTouchEvent(MotionEvent ev)

1)当前View dispatchTouchEvent()返回super.dispatchTouchEvent(),并且onInterceptTouchEvent()返回true时,当前View的onTouchEvent()会被掉用
2)事件一直被放行到最上层View,则会调用当前View的onTouchEvent()事件
return false,事件会从当前View向上传递,并且由父View的onTouchEvent()来接收
return true,消费该事件
super.onTouchEvent() 默认处理事件的逻辑与return false相同

注意:View没有onInterceptTouchEvent()方法,因为事件已经分发到最后,不需要拦截了。

文中所述父View皆指ViewGroup

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值