`
men4661273
  • 浏览: 278212 次
  • 性别: 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的事件分发机制demo2

    在"view的事件分发机制demo2"中,可能包含了对事件分发机制的实例演示,如自定义ViewGroup和View的实现,以及如何通过重写上述三个方法来控制事件流向。开发者可以通过调试这些方法,观察打印的日志,理解事件在View...

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

    在Android开发中,事件分发机制是理解和优化用户交互体验的关键。本文主要关注ViewGroup的事件分发,这是Android...理解并掌握ViewGroup的事件分发机制,有助于我们在Android应用中实现更加流畅和个性化的用户体验。

    Android自定义View的事件分发机制(一)

    在博客文章“Android自定义View的事件分发机制(一)”中,作者jsonnan详细阐述了这些概念,并可能通过实例代码展示了如何在自定义View中实现自定义的事件分发逻辑。通过阅读这篇文章,开发者可以更深入地理解...

    View的事件分发测试例子

    在Android开发中,View和ViewGroup是构建用户界面的基本元素,它们之间的事件分发机制是理解和优化用户交互的关键。本文将深入探讨`View`和`ViewGroup`的事件分发流程,以及`onTouchEvent()`方法在其中的角色。通过...

    android事件分发机制Demo

    在Android开发中,事件分发机制是理解和优化用户交互界面不可或缺的部分。...通过实践`android事件分发机制Demo`,你可以直观地看到事件如何在View和ViewGroup之间传递,从而加深对这一机制的理解。

    Android事件分发机制全解析Demo

    在Android开发中,事件分发机制是至关重要的一个部分,它决定了用户与界面交互时,事件如何在不同的组件之间传递和处理。本文将基于“Android事件分发机制全解析Demo”进行深入探讨,并通过实际的代码示例来帮助你更...

    ViewGroup事件分发Demo实验代码

    事件分发机制是Android用户界面(UI)系统的重要组成部分,它决定了触摸事件如何在View和ViewGroup之间传递。本Demo实验代码主要关注ViewGroup的事件分发过程,帮助开发者理解这一核心概念。 首先,我们来看事件...

    事件分发机制

    事件,通常指的是用户的触摸操作,如点击、滑动等,这些操作如何被准确地传递到相应的View上进行处理,就是事件分发机制的核心内容。下面我们将深入探讨这个主题。 首先,Android的事件分发机制主要包括三个步骤:`...

    Android事件分发机制总结Demo

    事件分发机制主要涉及三个关键组件:View、ViewGroup(布局)和MotionEvent。当用户触摸屏幕时,系统会生成一个MotionEvent对象,然后通过事件分发链来决定哪个View处理这个事件。 1. **事件序列**:事件分发分为按...

    Android事件分发机制

    在Android系统中,事件分发机制是用户与应用程序交互的核心环节。它决定了用户在屏幕上点击、滑动等操作如何被正确地处理和响应。本文将深入探讨Android事件分发机制,帮助开发者理解这一关键概念。 首先,我们从...

    AndroidView的事件分发机制和滑动冲突解决方案.docx

    ### AndroidView的事件分发机制和滑动冲突解决方案 #### 一、View的事件分发机制 在Android中,理解View的事件分发机制是非常重要的,因为它直接关系到用户交互的响应逻辑。本文将首先介绍Android中View的事件分发...

    Android 事件分发机制视频讲解

    - **dispatchTouchEvent()**:此方法负责将事件从ViewGroup分发到其子View上,通常情况下,事件会一直往下传递,直到有View消费了该事件或者到达了View树的最底层。 - **onInterceptTouchEvent()**:此方法用于决定...

    view的事件分发机制demo

    在实际开发中,有时我们需要在ListView或RecyclerView中拦截滑动事件,或者在嵌套的ViewGroup中调整事件处理顺序,这时就需要深入理解事件分发机制。 总之,Android的事件分发机制是构建用户交互界面的基础,熟练...

    Android事件分发机制小Demo

    在Android开发中,事件分发机制是至关重要的一个部分,它决定了用户与界面元素交互时的行为。本小Demo主要展示了Android事件分发的过程,并通过一系列的日志截图来帮助理解这一机制。下面,我们将深入探讨Android...

    Android事件分发机制(三)事件分发和消费

    在Android系统中,事件分发机制是用户与应用交互的核心环节,主要涉及到触摸事件的传递、处理和响应。本文将详细解析Android事件分发机制的第三部分:事件分发和消费,帮助开发者深入理解这一关键过程。 事件分发...

    android事件分发机制学习代码二

    在Android开发中,事件分发机制是至关重要的一个部分,它决定了用户与应用程序交互时,事件如何在View、 ViewGroup及Activity之间传递。本篇将基于"android事件分发机制学习代码二"的示例,深入解析Android事件分发...

    android事件分发机制

    ### Android事件分发机制详解 #### 一、触摸事件涉及的核心类 在Android系统中,触摸事件主要由两类核心对象负责处理:`ViewGroup` 和 `View`。 1. **ViewGroup**:作为容器,继承自 `View`,用于容纳多个 `View`...

    Android View事件分发处理机制Demo

    总的来说,Android的View事件分发机制是一个深度话题,涉及多个组件和方法的协同工作。通过"TestEventFlow"这样的实践项目,开发者能够更直观地理解事件如何在View层次结构中流动,从而更好地设计和优化用户界面的...

Global site tag (gtag.js) - Google Analytics