一、分发

当一个MotionEvent产生后,系统要把这个事件传递给具体的view,这个传递过程就是分发。

1.public boolean onInterceptTouchEvent(MotionEvent event)

返回Boolean结果,表示是否拦截处理此事件,默认返回false表示不拦截。只有viewgroup才有此方法,view没有,所以view收到后会立即执行onTouchEvent。

2.public boolean onTouchEvent(MotionEvent event)

自己去处理这个事件,返回结果表示是否消耗此事件。view的onTouchEvent默认消耗此事件。

3.public boolean dispatchTouchEvent(MotionEvent event)

继续往子元素分发事件,返回结果表示是否消耗此事件

伪代码如下

public boolean dispatchTouchEvent(MotionEvent event){

   boolean consume = false;

   if(onInterceptTouchEvent(event)){

      consume = onTouchEvent(event);

   }else{

      consume = child.dispatchTouchEvent(event);

   }

   return consume;

}

分发会从Activity开始,经过PhoneWindow,DecorView,再传入下面的元素中。

二、处理

如果View的onTouchEvent返回了False,表示不处理。就会调上层的onTouchEvent,上层不处理,继续往上反馈。

 

更多相关文章

  1. 浅谈Android(安卓)onTouchEvent 与 onInterceptTouchEvent的区别
  2. [置顶] Android的monkey测试
  3. android开发――ListView组件
  4. Android(安卓)client和服务器JSP互传中国
  5. Android(安卓)View事件传递详解
  6. android 事件处理--onInterceptTouchEvent和onTouchEvent调用时
  7. Android(安卓)之事件处理(二)基于监听的事件处理
  8. monkey基础学习
  9. monkey工具简介

随机推荐

  1. Android(安卓)TextView 文字居中
  2. Android概述
  3. EditView某些属性说明
  4. View的状态属性简介
  5. Android中TextVIew一些属性
  6. Android(安卓)SDK下载和更新失败的解决方
  7. Android(安卓)支持多屏幕机制
  8. Android应用开发相关下载资源(2014/12/14
  9. Android(安卓)5.0 Telephony关键类初始化
  10. Android(安卓)TextView 文字居中 .