`
men4661273
  • 浏览: 275677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

View,ViewGroup的事件分发机制

 
阅读更多

参考来源:

http://blog.csdn.net/guolin_blog/article/details/9097463

http://blog.csdn.net/guolin_blog/article/details/9153747

 

 

       看了两篇文章,讲的是view和viewgroup的事件分发机制,看了之后顿觉知识库又丰富了,写篇文章梳理一下我的理解,也算是为了记录一下,方面以后翻阅。

       长篇大论的源码的解读,结果的论证我这里也不进行了,资料中的前辈讲解的很清楚,如果需要了解的话可以进去详细阅读,我这里就以知识点的形式罗列一下,如有错误的话欢迎指出:

        1、view中的dispatchTouchEvent为进行事件分发的主入口

        2、view先是响应onTouch,再响应onTouchEvent的事件,如onClick等。

        3、如果view的onTouch事件返回false,则继续响应onTouchEvent;如果返回true,就不再响应onTouchEvent。这就是为什么有时候添加多事件的时候,onClick等事件没反应,想我这样的新手遇到这样的问题可以看一下onTouch事件的返回结果。

        4、如果onTouch返回的是false,那么可以点击的View(如button)可以继续action的传递,如ACTION_DOWN、ACTION_UP等,不可以点击的view(如imageview,可给其加上clickable="true"的属性变为可点击)会终止action的传递。

        5、onTouch能够得到执行需要两个前提条件,第一mOnTouchListener的值不能为空,第二当前点击的控件必须是enable的。因此如果你有一个控件是非enable的,那么给它注册onTouch事件将永远得不到执行。

        6、Android事件分发是先传递到ViewGroup,再由ViewGroup遍历子View,再去响应当前触摸的子View的事件,响应之后终止事件的传递,所以看起来像是先传递到子View,再传递到ViewGroup的,实则不然。

        7、 在ViewGroup中可以通过onInterceptTouchEvent方法对事件传递进行拦截,onInterceptTouchEvent方法返回true代表不允许事件继续向子View传递,返回false代表不对事件进行拦截,默认返回false。

分享到:
评论

相关推荐

    View的事件分发测试例子

    测试View和ViewGroup的事件分发机制

    Android事件分发机制(上) ViewGroup的事件分发

     Android中的事件分发机制也就是View与ViewGroup的对事件的分发与处理。在ViewGroup的内部包含了许多View,而ViewGroup继承自View,所以ViewGroup本身也是一个View。对于事件可以通过ViewGroup下发到它的子View并交...

    Android源码分析——ViewGroup的事件分发机制(二)

    通过前一篇博客View的事件分发机制,从dispatchTouchEvent说起(一)的介绍相信大家对 Android View 事件的分发机制有了很深的理解。我们知道 Android 中 View 是存在于 Activity。 今天我们继续学习 Activity 到 ...

    完全理解android事件分发机制

    之前笔者其实已经写过事件分发机制的文章:[快速理解android事件传递拦截机制概念](http://blog.csdn.net/double2hao/article/details/51541061) 但是,现在看来其实更像是一篇知识概括,多出可能未讲清楚,于是打算...

    android事件分发机制测试demo

    安卓事件分发机制测试代码,事件传递从Activity-->ViewGroup-->View。dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent这三个函数的返回值不同,代表的事件传递的不同。

    Android View的事件分发机制

    1、事件的分发机制,dispatchTouchEvent。主要是parent根据触摸事件的产生位置,以及child是否愿意负责处理该系列事件等状态,向其child分发事件的机制。 2、事件的拦截机制,onInterceptTouchEvent。主要是parent...

    Android View 事件分发机制详解

    Android开发,触控无处不在。...说白了这些触控的事件分发机制就是弄清楚三个方法,dispatchTouchEvent(),OnInterceptTouchEvent(),onTouchEvent(),和这三个方法与n个ViewGroup和View堆叠在一起的问题,再复杂的

    Android事件分发机制(下) View的事件处理

     在上篇文章Android中的事件分发机制(上)——ViewGroup的事件分发中,对ViewGroup的事件分发进行了详细的分析。在文章的最后ViewGroup的dispatchTouchEvent方法调用dispatchTransformedTouchEvent方法成功将事件...

    Android View事件分发机制详解

    准备了一阵子,一直想写一篇事件分发的文章总结一下,这个知识点实在是太重要了。...先铺垫一些知识能更加清晰的理解事件分发机制: 1. 通过setContentView设置的View就是DecorView的子view,即DecorView是父容器

    Android事件处理机制ViewGroup的事件传递

    博客配套说明:http://blog.csdn.net/xiaohao0724/article/details/54798908

    Android事件分发机制

    事件分发流程相关 一个事件发生后,首先从Acrtivity开始传递,然后一层一层往下传,从上往下调用dispatchTouchEvent方法传递事件: Activity——>PhoneWindow——>DecorView——>ViewGroup——>…——>View 如果事件...

    Android代码-androidEvent

    轻松弄懂android事件分发机制解析 android 中的事件处理一直以来困扰不少刚刚从事android开发的同学,网上也有不少讲解android事件分发的文章,然而讲解的都不够简洁!现在我将用另一种简洁的方式来讲解android事件...

    Android事件的分发机制详解

    在分析Android事件分发机制前,明确android的两大基础控件类型:View和ViewGroup。View即普通的控件,没有子布局的,如Button、TextView. ViewGroup继承自View,表示可以有子控件,如Linearlayout、Listview这些。...

    android面试题集锦(珍藏)

    View的,即隧道式传递,2而View又分为不包含子 View的View以及包含子View的ViewGroup,事件产生之后首先传递到Activity上面,而Activity接着会传递到 PhoneWindow上,PhoneWindow会传递给RootView,而RootView其实...

    Android 事件分发机制 讲解

    分发事件的组件,也称为分发事件者,包括Activity、ViewGroup和View。它们三者的一般结构为: 从上图中可以看出,Activity包括了ViewGroup,ViewGroup又可以包含多个View。 2、分发的核心方法 负责对事件进行分发的...

    Android 事件分发详解及示例代码

    这篇文章将通过示例打印出的Log,绘制出事件分发的流程图,让大家更容易的去理解Android的事件分发机制。 一、必要的基础知识 1、相关方法 Android中与事件分发相关的方法主要包括dispatchTouchEvent、...

    30分钟搞清楚Android Touch事件分发机制

    30分钟搞清楚Android Touch事件分发机制,Touch事件分发中只有两个主角:ViewGroup和View,想要深入学习的朋友可以参考本

    从源码解析Android中View的容器ViewGroup

    主要介绍了Android中View的容器ViewGroup,本文从源码解析ViewGroup的事件分发机制等,非常有深度,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics