onInterceptTouchEvent()的机制

   由于onInterceptTouchEvent()的机制比较, 复杂上面的说明写的也比较复杂,总结一下,基本的规则是:

1.       down事件首先会传递到onInterceptTouchEvent()方法

2.       如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,内部view将也会获取到down,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后一样传递给最终的目标view的onTouchEvent()处理。

3.       如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,内部view不会货到down,后续的move, up等事件也不再传递给onInterceptTouchEvent(),当然,move,up也不会传给view

4.       如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理。

5.       如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理。

6.       group的touch和这个机制没关系,与上一级有关系。


所以总结一下几点

 

1,group为false ,view为false ,的情况,touch每次都会从group到view ,view设了false(说明他不想处理了),但是group是false,就不得不把touch每次都给view,所以view每次都被强迫接受一次touch(down,up,move中的一个);

2,group 为true ,view 是什么都无所谓了,人家group根本就不给你touch。当然,如果你想的到一次的话,你可以在group的onInterceptTouchEvent中加上View view = findViewById(id);view.dispatchTouchEvent(event); 来触发view仅有的一次touch;

3,group 为false,view为true,的情况,跟第一种基本一样,第一种的view每次都被强迫,跟他自己接受没什么区别,所以几乎一样。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值