dispatchTouchEvent3种情况

本文详细解析了dispatchTouchEvent方法的三种返回形式及其在View、ViewGroup、Activity中的作用方式。通过伪代码展示了事件如何被拦截和传递的过程。

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

dispatchTouchEvent是 view , viewgroup , activity, 都有的方法。


该方法的返回形式可以有3种,return true, return false, return super.dispatchTouchEvent(event);

分别代表:

1,消费了事件。如果消费了事件,那么事件的后续会连续传入到这里。

2,不消费事件。不仅控件本身不消费,而且不向下传递。如果不消费事件,后续不会传入。而且onInterceptTouchEvent(MotionEvent ev) 和 onTouchEvent(MotionEvent event)不会被调用。

3,继续传递事件。

首先在super.dispatchTouchEvent方法中,调用本类的onInterceptTouchEvent(MotionEvent ev) , intercept方法 = true 则传至本类的onTouchEvent, intercept方法 = false 则传子控件。


伪代码如下:

public boolean dispatchTouchEvent(MotionEvent ev) {

    boolean consume = false;

    if (onInterceptTouchEvent(ev)) {

        consume = onTouchEvent(ev);

    } else {

        consume = child.dispatchTouchEvent(ev);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值