Android事件分发,拦截的流程梳理

本文详细解析了Android事件分发与处理的过程,通过阅读《Android群英传》,作者清晰地阐述了事件分发从View到ViewGroup再到View的传递机制,并重点介绍了ViewGroup与View在事件处理中的关键方法及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           从9月末找到工作后,就感觉一直在懈怠,中途三分钟热度温习了下Thinking in Java,而且也买了一些Android的进阶书籍在箱子里放着,但是一直没有看,感觉非常惭愧,

所以最近决定不能颓废了,拿起《Andorid群英传》开始阅读,真心是本好书。

          开始我对Android事件分发,拦截的机制的学习是基于一些csdn的博客的了解,不过总是感觉梳理不清楚这个流程,这次阅读《Android群英传》让我有了很清晰的认识,所以记录下这部分的理解。

          Android的事件分发,传递机制首先会有:

              1.ViewGroup>到View这个过程,这个过程称之为Android的事件分发

              2.View>ViewGroup这个过程,这个过程称之为Android的事件处理返回

         其中ViewGroup的部分可以有多层嵌套,处理方式如上1.2依次进行。

         ViewGroup作为一个上级有三个方法需要重写:

             dispatchTouchEvent();

            onInterceptTouchEvent();

            onTouchEvent();

        View作为下线只有两个方法需要被重写:

            dispatchTouchEvent();

            onTouchEvent();

       从两者的区别就可以很好的看出,作为事件拦截的核心方法就是onInterceptTouchEvent();

       为了更好的说明,我依照返回值将整个流程演示一遍:

        a.用户触摸屏幕

        b.ViewGroup接收到信号,使用 dispatchTouchEvent(),然后调用onInterceptTouchEvent();;(返回值是true(c),返回值是false(d))

        c.ViewGroup不再向下传递事件,调用自身的onTouchEvent()完成逻辑;

        d,ViewGroup向下传递事件给View,调用View的onTouchEvent();(返回值是true(e),返回值是false(f))

        e.View不向上级ViewGroup返回事件的处理,整个事件到此完结

       f.View向上级ViewGroup返回事件的处理,上级ViewGroup  调用onTouchEvent(),整个事件到此完结

       到此整个事件分发,拦截的流程都走了一遍,对于嵌套的ViewGroup可以如此类推。

       最后我想说的是对于这个返回值的理解,我个人是没有阅读这一部分的源码的(惭愧),所以对这个的理解我只能根据《Android群英传》里的加上自己的理解:

      若是返回true,那么可以认为这个事件已经完成了,不需要向下传递或者是向上返回;

      若是返回false,那么可以认为这个事件仍旧没有完成,需要继续向下传递或者是向上返回。

      以后自己理解这其中的缘由之后,看过源码之后,会过来进行补充。

  

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值