【Android】View、ViewGroup事件分发

一、事件分发注意基本点:

1、我们触摸手机屏幕主要三种事件类型进行分析,
     (1) ACTION_DOWN 
     (2) ACTION_UP
     (3) ACTION_MOVE
2、我们要清楚,View和ViewGroup事件分发,是从Activity--->ViewGroup--->View;
3、事件消费是从View--->ViewGroup--->Activity;
4、只有ViewGroup有事件拦截方法,onInterceptOnTouchEvent方法;

二、Activity、ViewGroup、View事件传递方法的异同点

1、Activity、ViewGroup、View的dispatchTouchEvent在return super的时候才会分发到下一步;
2、Activity、ViewGroup、View的dispatchTouchEvent在return true的时候不会分发到下一步,且自己消费;
3、特别注意Activity的dispatchTouchEvent在return false的时候不会分发到下一步,且自己消费;
4、ViewGroup、View的dispatchTouchEvent在return false的时候不会分发到下一步,而是将事件返回给上一级的onTouchEvent消费;
5、ViewGroup的onInterceptOnTouchEvent在return true时, 会将事件拦截并传递给自己的onTouchEvent去消费;
6、ViewGroup的onInterceptOnTouchEvent在return false、super时, 会将事件传递给下一级;
7、ViewGroup、View的onTouchEvent在return false、super时,都会将消费事件返回给上一级去消费;
8、Activity、ViewGroup、View的onTouchEvent在return true,都会消费掉本次事件

如图所示:

 

三、总结

1、当 ACTION_DOWN    Activity、ViewGroup、View没有被消费,那么 ACTION_MOVE 、 ACTION_UP 不会被分发下一级;
2、当事件被消费,事件就不会再被传递,且 ACTION_MOVE 、 ACTION_UP 不会被分发下一级;
3、当事件被拦截,事件也不会再向下被分发,且 ACTION_MOVE 、 ACTION_UP 不会被分发下一级;
4、当事件分发返回true也不会再分发,且被分发方法自己消费
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值