android onInterceptTouchEvent()和onTouchEvent

看了好多文章,决定写下一些自己的理解。


这篇文章讨论的情况,只属于,多ViewGroup 多控件,消息响应机制。


题目有点大,我主要说简单的理解。


touch 事件,先响应onInterceptTouchEvent 然后再往下响应onTouchEvent。


onInterceptTouchEvent  是ViewGroup 消息响应的重要方法。 用于处理事件并改变事件的传递方向,该方法返回一个boolean值,

这个boolean 值 决定 touch 事件是否要向 childview 传递 。

onTouchEvent 方法,用于接收事件并处理,它的返回值也是一个boolean,决定事件以及后续事件是否继续传递。


touch事件在onInterceptTouchEvent  和onTouchEvent 以及各个childview间传递机制完全取决于 这两个方法的返回值。

返回值为true表示事件正被正确的接收和处理,返回值为false表示事件没有被处理,将继续传递下去。


ACTION_DOWN 事件会从高层 (高等级的ViewGroup)类的onInterceptTouchEvent  逐渐往低等级的ViewGroup传递,最终传到View控件。

ViewGroup 之间传递 是传递onInterceptTouchEvent  事件,但是View控件响应的是onTouchEvent 事件。


如果某个ViewGroup 的onInterceptTouchEvent  返回了true,则DOWN 事件传递给 它的onTouchEvent,从此便不往下面传递了(即使下面有ViewGroup和View控件)。


如果 某个View控件(底层)的onTouchEvent返回了false,则DOWN 事件往高层ViewGroup类的onTouchEvent传递,如果返回了true,则后续事件直接传递给其它的

onTouchEvent继续处理,后续事件只会发给响应DOWN的View 或者ViewGroup


这不禁让我想起了 视图栈


底层框架在 栈底,栈顶的是View控件,消息从栈底发出来, 一层层响应,如果有人敢兴趣 ,就返回了。如果一直传递到View控件 都没人响应,就会再把消息发回去,再看一次是否有人感兴趣。


http://www.cnblogs.com/kingcent/archive/2011/03/08/1977064.html 该文章很给力

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值