理解点击事件的事件分发过程

本文详细解析了Android中触摸事件的处理流程,包括dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个关键方法的作用及它们之间的相互关系。通过伪代码的形式直观展示了事件如何在ViewGroup及其子元素间传递和处理。

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

三个方法:

public boolean dispatchTouchEvent(MontionEvent event)    
public boolean onInterceptTouchEvent(MontionEvent event)
puclic boolean onTouchEvent(MontionEvent event)

关系:

//伪代码
public boolean dispatchTouchEvent(MotionEvent ev) {
	boolean consume = false;
	if(onInterceptTouchEvent(ev)) {
		consume = onTouchEvent(ev);
	} else {
		consume = child.dispatchTouchEvent(ev);
	}
	return consume;
}

对于这三者关系的理解:

对于一个根ViewGroup,点击事件产生后,首先会传递给它,这时它的dispatchTouchEvent就会被调用,如果当前的这个ViewGroup的onInterceptTouchEvent方法返回true就表示它要拦截当前事件,接着事件就会交给这个ViewGroup处理,即它的onTouchEvent方法就会被调用;如果这个这个ViewGroup的onInterceptTouchEvent方法返回false就表示它不拦截当前事件,这时当前事件就会继续传递给它的子元素,接着子元素的dispatchTouchEvent方法就会被调用,如此反复直到事件被最终处理。



--出自《Android 开发艺术探索》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值