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

           从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,那么可以认为这个事件仍旧没有完成,需要继续向下传递或者是向上返回。

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

  

        

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值