android Touch传递过程的理解

TouchEvent事件的处理:在View树中,找到一个可以处理这个Touch事件的View,然后不断
         把TouchEvent事件传递给这个View
         1.查找的过程发生在ACTION_DOWN时
                从View树的根View开始从上向下,传递TouchEvent事件,这个过程是在查看是否有
                        ViewGroup拦截,如果有,TouchEvent事件不会再向下传递;
                                                  如果没有, TouchEvent事件会传递到最底层的View/ViewGroup
                 再从底向上,传递TouchEvent事件,这过程是在查看是否有View/ViewGroup可以处理
                       TouchEvent事件,如果有,记录这个View/ViewGroup,和从根View到达这个View
                                                                /ViewGroup的路径,且不会再向上传递这个TouchEvent
                                                  如果没有,则View树不会再处理后续的TouchEvent事件
        2.查找到后, 会根据记录下来的路径,把后续的TouchEvent事件不断通过记录的路径传递
                  给View,这个过程依然可以拦截这个TouchEvent,但这个拦截不会妨碍后面的TouchEvent
                 接着按照记录的路径传递给View
         View.dispatchTouchEvent()负责调用onTouchEvent(),onTouchEvent()的返回值决定了View是否处理
                 这个事件,true代表处理,false代表不处理
         ViewGroup继承了View,重写了dispatchTouchEvent(),dispatchTouchEvent()负责向ViewGroup的子View
                传递TouchEvent,也负责调用自身的onTouchEvent,判断它本身出否处理该TouchEvent;
                也就是它负责向下传递TouchEvent事件
          ViewGroup的onInterceptTouchEvent负责拦截TouchEvent,true代表拦截
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值