Android事件分发机制

本文深入解析Android中事件分发机制,包括disPatchTouchEvent()、onTouchEvent()、onInterceptTouchEvent()等方法的工作原理。阐述了事件如何在View和ViewGroup间传递,以及事件的消费、回传和中断过程。

 


通过图片,我们能够知道 
所有disPatchTouchEvent()方法(除Activity) 
return true 事件消费 
retur false 事件回传父类的onTouchEvent() 
return super() 事件向下传递 
所有的dispatchTouchEvent()和onTouchEvent()方法,一旦return true,则事件就被消费,没有谁能够接收到这个事件了 
 

 


所有的dispatchTouchEvent()和onTouchEvent()方法return false的时候,都会回传给父控件的onTouchEvent()方法处理 
 

 


如果事件不中断,则整个事件为U型传递,也就是一直return super() 
 

 


onInterceptTouchEvent()方法的作用,每个ViewGroup都会有onInterceptTouchEvent()方法来判断是否需要拦截事件,如果返回true,则会将事件传递到自己的onTouchEvent()方法中,如果返回false和super(),则表示不拦截,向下继续传递事件 
 

 


ViewGroup怎么将事件传递到自己onTouchEvent()呢,ViewGroup的disPatchTouchEvent()方法 
return true,则事件消费,不再传递 
return false,则事件传递到父控件的onTouchEvent()方法 
return super() ,将事件传递到onInterceptTouchEvent()方法,然后return true之后,才能自己处理自己的onTouchEvent 
View怎么将事件传递到自己的onTouchEvent()呢?View 没有onInterceptTouchEvent()方法,只有disPatchTouchEvent()方法 
return true则事件消费 
return false 则事件传给ViewGroup的onTouchEvent()方法 
return super()则事件传递给自己的onTouchEvent()

 

转载于:https://www.cnblogs.com/nangongyibin/p/10447175.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值