Android View的事件传递机制

1,传递机制主要原理

 onTouchevent(处理事件) ,dispatchTouchEvent(分发),onInterceptTouchEvent(拦截事件)

 

2,实现效果

【1】正常状态孩子不消费事件,会返回给父容器。

MyViewGroup, dispatchTouchEvent(ture),onInterceptTouchEvent(false), onTouchevent(ture)

MyView   dispatchTouchEvent(ture), onTouchevent(false)

父容器先获取事件,不拦截,分发给孩子,孩子接收到事件.孩子也不消费事件.把事件又返回给父容器消费,默认父容器也不消费

【2】孩子消费事件,传递结束

MyViewGroup, dispatchTouchEvent(ture),onInterceptTouchEvent(false), onTouchevent(ture)

MyView   dispatchTouchEvent(ture), onTouchevent(ture)

父容器先获取事件.不拦截.分发给孩子.孩子接收到事件.让孩子消费事件.如果事件消费了,事件传递结束

 

【3】父容器先获取事件.拦截.事件不会分发给孩子.让父容器自己消费

MyViewGroup, dispatchTouchEvent(ture),onInterceptTouchEvent(ture), onTouchevent(ture)

MyView   dispatchTouchEvent(ture), onTouchevent(ture)

 

 

 

【4】父容器先获取事件.点击绿色区域.不会把事件分发给孩子.父容器拦截

MyViewGroup, dispatchTouchEvent(ture),onInterceptTouchEvent(ture), onTouchevent(ture)

MyView   dispatchTouchEvent(ture), onTouchevent(ture)

 

【5】父容器先获取事件.点击绿色区域.不会把事件分发给孩子.父容器不拦截

MyViewGroup, dispatchTouchEvent(ture),onInterceptTouchEvent(true), onTouchevent(ture)

MyView   dispatchTouchEvent(ture), onTouchevent(ture)

 

【6】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值