onInterceptTouchEvent和onTouchEvent调用时序

转:http://my.oschina.net/u/191330/blog/125291

  1. onInterceptTouchEvent()与onTouchEvent()的机制:
  2.   1. down事件首先会传递到onInterceptTouchEvent()方法
  3.   2. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之return false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理
  4.   3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。
  5.   4. 如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理
  6.   5. 如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理。
时间: 2024-11-05 10:50:28

onInterceptTouchEvent和onTouchEvent调用时序的相关文章

onInterceptTouchEvent和onTouchEvent调用关系详解 ...

本帖记录onInterceptTouchEvent和onTouchEvent调用关系,即各种return true和return false的运行情况. return true和return false,代表的是是否消费完该事件,也就是该事件是否会继续传递给下层或者上层组件继续处理.return true代表消费完不会继续传递,return false代表没有消费完将会继续传递. 如果没有onInterceptTouchEvent,只考虑onTouchEvent的话,比较容易分析和理解.假如有三

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

Android学习笔记之dispatchTouchEvent和OnInterceptTouchEvent和OnTouchEvent三个方法之间的联系...

PS:好久没有写博客了,项目正式开始启动了,但是怎么也打不起精神来...可能还是不适应放假留校...这下一年只能回家一次了...伤感...写篇博客舒坦下... 学习内容:   Android中dispatchTouchEvent和OnInterceptTouchEvent和OnTouchEvent三个方法之间的联系...这三个方法研究了整整一个下午,也没有理解的特别的好...说实话,java的源代码我始终都没有看懂究竟是怎么个调用过程...不过还是把自己理解的结果写一下把...   这三个方法是

细说Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)

本文背景:前些天用到了之前写的自定义图片文字复合控件,在给他设置监听时遇到了麻烦.虽然最后解决了问题,但发现在不重写LinearLayout的onInterceptTouchEvent时,子ImageView.子TextView.父Linearlayout三者不同的属性配置(android:clickable android:focuseable)会造成自定义控件onClick监听失败.或成功.复写了父Linearlayout 的onInterceptTouchEvent时,监听不受子图片.子文

Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)

一.View的dispatchTouchEvent和onTouchEvent 探讨Android事件传递机制前,明确android的两大基础控件类型:View和ViewGroup.View即普通的控件,没有子布局的,如Button.TextView. ViewGroup继承自View,表示可以有子控件,如Linearlayout.Listview这些.而事件即MotionEvent,最重要的有3个: (1)MotionEvent.ACTION_DOWN  按下View,是所有事件的开始 (2)M

onInterceptTouchEvent 与 onTouchEvent 分析与MotionEvent在ViewGroup与View中的分发

onInterceptTouchEvent 与 onTouchEvent 分析与MotionEvent在ViewGroup与View中的分发 Notice:本文将紧接着 Android 触屏事件 OnTouch onClick onTouchEvent对于触屏事件的处理和分发 这一片博文来分析,假设您还没有读过这一片博文,强烈建议你先读一次上述博文 OK,言归正传,我们開始吧 近期,一直听到有人在争论关于dispatchTouchEvent这个函数 和 onInterceptTouchEvent

android事件之onInterceptTouchEvent,dispatchTouchEvent,onTouchEvent,requestDisallowInterceptTouchEvent

android 的这个事件的分发传递,处理的解决方式, 实质应该是 java设计模式里面的 责任链模式了. 在这里,想用最少的话,最通俗易懂的方式记录 View的方法 // 事件分发,默认返回false public boolean dispatchTouchEvent(MotionEvent event) // 事件处理,默认返回false public boolean onTouchEvent(MotionEvent event) ViewGroup的方法 // 事件分发,默认返回false

dispatchTouchEvent(),onInterceptTouchEvent()和onTouchEvent()的事件分发

在布局文件里,假设有3层 , 一层是button, textview等常见组件, 二层是嵌套的RelativeLayout, 三层是LinearLayout, 而一个触摸屏幕的事件无非就是ACTION_DOWN, ACTION_MOVE, ACTION_UP.  而手指从按下到松开离开屏幕, 其实事件分发的传递已经经过了这三层. 这里说下它的处理过程, 也算是巩固记忆了. 首先, dispatchTouchEvent(),onInterceptTouchEvent()和onTouchEvent(