Android开发的朋友经常处理各种触摸事件,然而在触摸事件的传递过程中主要用到三个方法:dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()。相信这困扰了很多朋友,下面通过图文给大家介绍一下它们之间的传递过程。

工具/原料

  • android
  • android studio

方法/步骤

  1. 1

    事件的起源:

    我们都知道触摸事件是从Activity的dispatchTouchEvent方法开始的。再调用父类的super.dispatchTouchEvent(ev),事件向派发。

  2. 2

    ViewGroup与View关系:View是android控件的最简单的一个类,所有的控件都直接或间接继承View,即ViewGroup继承View。View有两个回调函数dispatchTouchEvent和onTouchEvent;ViewGroup有三个回调函数dispatchTouchEvent、onTouchEvent和onInterceptTouchEvent。

  3. 3

    dispatchTouchEvent事件说明:

    dispatchTouchEvent只负责处理触摸事件的派发,事件由Activity的dispatchTouchEvent开始的。再执行父类的

    super.dispatchTouchEvent(ev)事件向下派发。

  4. 4

    onInterceptTouchEvent事件说明:

    onInterceptTouchEvent是ViewGroup提供的方法,它的默认返回false表示不拦截事件,当返回true时表示拦截了事件,即自己处理消费。

  5. 5

    onTouchEvent事件说明:

    ViewGroup和View都有这个方法,onTouchEvent这个方法主要处理触摸事件的按下移动和弹起的操作,当返回为true时表示消费了这个事件,false则不消费,即返回上一层处理。

  6. 6

    事件的传递过程:

    Android中事件的传递过程都是从父布局传递到子布局,父布局可以有很多个,即ViewGroup-->ViewGroup-->View的过程,ViewGroup起到的是透传作用。

Android Touch事件传递机制详解的更多相关文章

  1. Android Touch事件传递机制详解 下

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38025165 资源下载:http://download.csdn.net/detail/yu ...

  2. Android Touch事件传递机制详解 上

    最近总是遇到关于Android Touch事件的问题,如:滑动冲突的问题,以前也花时间学习过Android Touch事件的传递机制,可以每次用起来的时候总是忘记了,索性自己总结一下写篇文章避免以后忘 ...

  3. Android 的事件传递机制,详解

    Android 的事件传递机制,详解 前两天和一个朋友聊天的时候.然后说到事件传递机制.然后让我说的时候,忽然发现说的不是非常清楚,事实上Android 的事件传递机制也是知道一些,可是感觉自己知道的 ...

  4. Android Touch事件传递机制 二:单纯的(伪生命周期)

    转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...

  5. Android Touch事件传递机制 二:单纯的(伪生命周期) 这个清楚一点

    转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...

  6. Android事件传递机制详解及最新源码分析——ViewGroup篇

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴 ...

  7. Android Touch事件传递机制 一: OnTouch,OnItemClick(监听器),dispatchTouchEvent(伪生命周期)

      ViewGroup View  Activity dispatchTouchEvent 有 有 有 onInterceptTouchEvent 有 无 无 onTouchEvent 有 有 有 例 ...

  8. Android touch 事件传递机制

    前言: (1)在自定义view的时候经常会遇到事件拦截处理,比如在侧滑菜单的时候,我们希望在侧滑菜单里面有listview控件,但是我们希望既能左右滑动又能上下滑动,这个时候就需要对触摸的touch事 ...

  9. Android Touch事件传递机制通俗讲解

    在讲正题之前我们讲一段有关任务传递的小故事,抛砖迎玉下: 话说一家软件公司,来一个任务,分派给了开发经理去完成: 开发经理拿到,看了一下,感觉好简单,于是 开发经理:分派给了开发组长 开发组长:分派给 ...

随机推荐

  1. 在 IIS 6 和 IIS 7中配置Https,设置WCF同时支持HTTP和HTPPS,以及使用HttpWebRequest和HttpClient调用HttpS

    IIS 7 ,给IIS添加CA证书以支持https IIS 6 架设证书服务器 及 让IIS启用HTTPS服务 WCF IIS 7中配置HTTPS C#利用HttpWebRequest进行post请求 ...

  2. python 3.5.2 install pillow

    1. 首先尝试从官网下载, pip install pillow, 结果网络不行,总是连不上或者下载中就失败, C:\Windows\system32>pip install pillowCol ...

  3. java3

    1:在定义Long或者Float类型变量的时候,要加L或者f. 整数默认是int类型,浮点数默认是double. byte,short在定义的时候,他们接收的其实是一个int类型的值. 这个是自己做了 ...

  4. mysql ERROR 1045 (28000): 错误解决办法

    ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ERROR 1045 (28000 ...

  5. bootscript/javascript组件

    javascript组件   (1)每一个插件(带有js功能的组件),想使用bootstrap插件,一个是要去写他的html,第二个是使用CSS去修饰它,再引入相应的js文件. bootstrap框架 ...

  6. js根据不同浏览器(分辨率)调用不同css

    根据不同浏览器: <script type="text/javascript"> var version = navigator.userAgent; if (vers ...

  7. TFS二次开发系列:四、TFS二次开发WorkItem添加和修改、保存

    WorkItemStore:表示跟踪与运行 Team Foundation Server的服务器的工作项客户端连接. A.添加工作项 1.首先获得某服务器的WorkItemStore. WorkIte ...

  8. Client病毒已感染超7万人 暗扣费并频弹广告

    恶意木马病毒横行,您的钱包还hold得住吗?猎豹移动安全实验室与安天AVL移动安全团队于2015年下半年,共同截获一款名为Client的木马病毒,并且对该病毒进行持续监测.通过进一步关注,我们发现该病 ...

  9. CompletionService/ExecutorCompletionService/线程池/concurrent包

    线程池 线程池的基本思想:线程频繁的创建.销毁会极大地占用系统资源,为了减少系统在创建销毁线程时的开销,线程池应运而生.线程池包括多个已创建的线程,当有任务要在新线程中执行时,将任务提交给线程池,线程 ...

  10. mysql开发小结

    目录 1. 使用mybatis操作mysql数据库SUM方法返回NULL解决 2. limit m,n 1. 使用mybatis操作mysql数据库SUM方法返回NULL解决解决方案一: SELECT ...