android方向手势,详解Android事件传递顺序与通用手势处理

我准备总结dispatchTouchEvent onUserInteraction onTouchEvent onInterceptTouchEvent四个回调在activity,layout,viewgroup,view四个层次的调用顺序。首先定义消息的传递方向,第一个接受消息的为最顶端的话,四个层次从顶端到底端就是我列出的顺序(网上很多江湖郎中扯什么消息是从最里面的控件传到最外面,那是片面之词),但是每个层次不一定都有这四个回调,在我实验结果中,消息的传递并不是单向的,而是环形的。

不需要复杂的示意图,也不需要晦涩的术语。假设屏幕上是一个布局,布局里有一个按钮,对,就这么多东西。然后用户手指在按钮上按了一下,这时候Activity会在dispatchTouchEvent中收到一个down事件,Activity可以选择自己尝试消费(dispatch里return true),尝试消费的话就会在onTouch中收到这个消息,onTouch返回真表示消费成功,这个事件就结束了(否则会传给上级消费);也可以不尝试消费而给自己的下一级——布局。布局会在onInterceptTouchEvent中收到这个消息,但是布局并没有dispatch这个函数,布局的“dispatch”函数名字叫onInterceptTouchEvent,同样表示是否尝试消费,准确来讲是表示是否阻断,一旦阻断了,这个消息就无法下达了。对于下面的viewgroup和view都是一样的道理,一般如果一个容器表示要消费,消息就不一定会传下去,如果容器消费成功了事件就完成了,否则就给里面的容器。里面的容器没有消费的话仍然会返回给上面的容器消费。

我写得可能很糟糕,

至于手势处理,不必放到layout层和viewgroup层,就activity层就能处理了。

6675a86dac0d9cc1b9c9dd170ef75300.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值