[Android高级进阶] - 触摸事件的传递机制

  主要本文的主要的内容来源《Android 高级进阶》(顾浩鑫/著)图书


先看一下思维导线



Android View(除ViewGroup的控件) 的事件处理机制,我们可以理解成一个场景。当用户开始一个触摸的事件, 就行先从最外的Activity开始, 首先会问, dispatchTouchEvent是否要继续传递事件呢?如果不传递就就会直接完成的这个的事件,如果继续传递,就到View控件中。然后会继续这个控件, 你会不会继续分发这个事件呢?如果View控件说,我不要这个事件,那么有问View控件,是否要直接杀死这个事件? 如果杀死(true),完成事件。如果不杀死就交给上层进行事件消费的,然后完成事件。

如果,View空间接受这个事件,则会开始处理,View控件先会问一下老大(onTouch)我可以不执行事件吗(想偷个懒)?老大说:不可以,就开始消费事件(onTouchEvent)。如果老大说:可以偷懒,那么就完成放弃了这个事件。

流程图:



  Android ViewGroup 的事件处理机制和View控件的很类似,不同的地方有:

    1, ViewGroup 有一个拦截的功能(onInterceptTouchEvent)函数,在调用完成分发函数后调用。如果返回的true 表示拦截此事件,事件将不会在继续向下分发事件。直接返回给上一层的Activity

    2,在子View中对事件进行消费后,ViewpGroup将接受不到任何事件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值