Android ViewGroup onInterceptTouchEvent 和 onTouchEvent

在Android中,onInterceptTouchEvent和onTouchEvent都是用来处理Touch操作的函数。

其中onTouchEvent在View和ViewGroup类中都有,而onInterceptTouchEvent只在ViewGroup类中有。

在ViewGroup中onInterceptTouchEvent和onTouchEvent协作,使相应的ViewGroup(View)去处理相应的Touch事件。

ViewGroup可以嵌套多层ViewGroup,Touch事件最先被最外层的ViewGroup接收,向内一层层传递,最终传递到最内层的ViewGroup(View)。内层的ViewGroup(View)最先处理Touch事件,处理完之后向外一层层传递,每一层依次处理该Touch事件。

实际上,每一曾的ViewGroup都可以决定Touch事件是否要继续向内/向外传递。

通常情况下,如果使用系统自带的ViewGroup,Touch事件会从最外层传递到最内层,再从最内层处理到最外层。而我们自定义的ViewGroup则不必这样,我们可以通过自定义onInterceptTouchEvent和onTouchEvent的返回值,决定是否还要将Touch事件向内/向外传递,还是将当前的ViewGroup就当做最外层/最内层的来处理。

onInterceptTouchEvent的返回值用来决定Touch事件是否继续向内层传递(是否拦截这个Touch事件):
return true:拦截,Touch事件不再向内层传递
return false:不拦截,Touch事件继续向内层传递
onTouchEvent的返回值用来决定Touch事件是否继续向外层传递(是否已经消费(consume)掉这个事件):
return true:Touch事件已经被消费,不再向外层传递
return false:Touch事件还没有被完全消费,继续向外层传递
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值