Touch事件 理 摘

本文详细解析了Android中触摸事件的分发机制,包括dispatchTouchEvent、onTouchEvent等关键方法的作用和流程,以及如何通过自定义ViewGroup来实现复杂的触摸事件处理逻辑。

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

dispatchTouchEvent 只有父layout:ViewGroup有的拦截事件 若false 给子处理,否则给自己的onTouchEvent处理

onTouchEvent view点击处理事件 若true 会继续处理接收来的事件,若false则往父传,下一次不会传过来了,父的onTouch事件去接收处理 直到到activity的onTouch事件处理



往下传为隧道方式 往上为冒泡:


 Touch事件通过dispatchTouchEvent以隧道方式从上往下传递。如果在一个View中执行onTouchEvent时返回 true的话,接下来的事件(ACTION_DOWN后的ACTION_UP,及可能在中间包含的若干个ACTION_MOVE,从 ACTION_DOWN至ACTION_UP为一个连续事件,这是自己想的,不知道准确否)仍会传递到这个View的onTouchEvent,如果返回 false的话,接下来的事件就不会再传递到这个View,而是执行其Parent View的onTouchEvent,每当一个View的onTouchEvent事件返回false,接下来的事件(如果还有的话)就会止步于这个 View的Parent View,每次上升一个层次,类似于冒泡方式。



在一个viewGroup上有多个viewGroup 拦截事件:

如果第一个ViewGroup的 dispatchTouchEvent函数就返回了true(已经消耗掉了这个事件),那么其他两个ViewGroup的 dispatchTouchEvent就不会再被调用。可以自定义一个ViewGroup的子类并重载他的dispatchTouchEvent函数,使 其处理过Touch事件后仍返回false,那么就还会调用其他兄弟View的dispatchTouchEvent函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值