码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-27 23:29:06      阅读:199      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!