View的事件分发机制

本文探讨了在Android中Button和ImageView对触摸事件的不同处理方式,重点解释了Button为何能够执行完整系列的触摸事件(Down, Move, Up),而ImageView在设置onTouch监听为false时仅执行Down事件的原因。通过深入解析View源码中的dispatchTouchEvent方法,揭示了事件传递机制与控件可用性的内在联系。

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

文章转自http://blog.youkuaiyun.com/guolin_blog/article/details/9097463

由于我写博客其实都是自己理解的,比较简单。

     给一个Button注册一个onTouch事件,和onClick事件,onTouch事件返回false,会执行onTouch的Action,如Down,Move,UP,最后执行onclick方法,如果onTouch方法返回false,则会执行Ontouch的所有Action,不会执行onClick方法,查看view源码,dispachTouchEvent方法,首先会判断当前View是否设置了onTouch监听,该控件是否可用,onTouch监听是否返回true,如果三个条件都满足,则view自己处理事件。如果不满足则执行onTouChEvent方法,如果我们把Button改成ImageView,然后设置onTouch监听为false,结果执行ActionDown事件就结束了,首先touch事件的传递机制只有第一个Action返回true,后面的动作才会执行,为什么Button就可以,因为Button可以点击,在onTouchEvent方法中设置会判断当前view是否可以点击,然后就行一系列Action,而且这个事件判断都会返回false。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值