首页 > 其他 > 详细

事件分发机制和事件传递机制

时间:2015-11-27 23:27:54      阅读:247      评论:0      收藏:0      [点我收藏+]


1. 触屏事件先传递给父容器的onInterceptTouchEvent方法(注:非容器没有onInterceptTouchEvent方法)
return true,事件被消费,此次事件与子控件无关,onInterceptTouchEvent会陆续接收到ACTION_MOVE,ACTION_UP事件
return false,事件优先传递给子控件处理

2. 子控件onTouchEvent接收到ACTION_DOWN事件,
return true 子控件消费事件,事件不向上回传,onTouchEvent会陆续接收到ACTION_MOVE,ACTION_UP事件
return false 子控件不处理,事件向上回传父控件,onTouchEvent不会接收到ACTION_MOVE,ACTION_UP事件

3. 父控件onTouchEvent接收到ACTION_DOWN事件后
return true 父控件消费事件,不再向上传递,onTouchEvent会陆续接收到ACTION_MOVE,ACTION_UP事件
return false 父控件不处理,事件向上回传父控件,onTouchEvent不会接收到ACTION_MOVE,ACTION_UP事件

4. 根据dispatchTouchEvent方法源码可知onTouchListener优先于onTouchEvent

总结:

1. 要让父控件处理触屏事件,必须满足:
只需要onInterceptTouchEvent方法return true;

若是有onTouchListener监听,onTouch方法必须返回false。

2. 要让子控件处理触屏事件,必须满足:
只需要父控件onInterceptTouchEvent方法默认return super.onInterceptTouchEvent(ev)或者直接return false,
子控件onTouchEvent方法 return true;

若是有onTouchListener监听,onTouch方法必须返回false。

事件分发机制和事件传递机制

原文:http://www.cnblogs.com/huangtianfu/p/5001946.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!