触发事件传递

本文详细解析了Android中View和ViewGroup的点击事件传递流程,包括ACTION_DOWN和ACTION_UP触发时的具体事件序列,并讨论了如何通过onTouch监听事件阻止onClick事件的触发。

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

一、View(Button,TextView等)

点击事件,正常执行顺序:

按下触发ACTION_DOWN

(Activity)dispatchTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent


接着弹起触发ACTION_UP

(Activity)dispatchTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent->(View)onClick监听事件


如果不想执行onClick监听事件,则可以在onTouch监听事件中返回true,则不会执行onTouchEvent,也就不会去执行onClick监听事件


二、ViewGroup(LinearLayout,ListView等)

点击事件,正常执行顺序:

按下触发ACTION_DOWN

(Activity)dispatchTouchEvent->(ViewGroup)dispatchTouchuEvent->(ViewGroup)onInterceptTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent


接着弹起触发ACTION_UP

(Activity)dispatchTouchEvent->(ViewGroup)dispatchTouchuEvent->(ViewGroup)onInterceptTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent->(View)onClick监听事件


这里如果ViewGroup的onInterceptTouchuEvent返回true,则下面的View事件不会执行,而会执行(ViewGroup)注册的onTouch监听事件->(ViewGroup)onTouchEvent->(ViewGroup)注册的onClick监听事件



一篇比较好的事件传递文章:http://blog.youkuaiyun.com/lmj623565791/article/details/39102591





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值