事件分发的基础知识

什么是事件分发

用户通过屏幕与手机交互的时候,每一次点击、长按、移动等都是一个事件。

事件分发机制:

某一个事件从屏幕传递到各个View,由View来使用这一事件(消费事件)或者忽略这一事件(不消费事件),这整个过程的控制。

事件分发的对象是谁

系统把事件封装为MotionEvent对象,事件分发的过程就是MotionEvent分发的过程。

事件的类型

按下(ACTION_DOWN)

移动(ACTION_MOVE)

抬起(ACTION_UP)

取消(ACTION_CANCEL)

事件取消的例子:屏幕上有个ScrollView,它可以进行上下的滚动,在ScrollView上有个Button,当我们把手指按在这个Button上的时候,Button是可以接收到按下(ACTION_DOWN)的这个事件的,这个时候我们的手指进行上下的移动,Button的父容器ScrollView就会去拦截这么一个事件,同时Button上就会接收到取消(ACTION_CANCEL)这个事件,表示当前这个的点击事件对于Button来说取消了。

事件序列

从手指按下屏幕开始,到手指离开屏幕所产生的一系列事件。

传递层级

Activity - > Window - > DecorView - > ViewGroup - > View

手指触碰到Activity时,事件会有这么一个过程:

事件最初会在Activity之上,然后通过Window传递到DecorView上(这里的DecorView就是Window所持有的一个DecorView),而DecorView又继承至ViewGroup,事件从这个ViewGroup进行分发,然后才会分发到我们创建的一个个子的ViewGroup和View上。

主要传递对象及顺序

Activity  

ViewGroup 

View

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 概述   作为Android开发中最常见的一个控件,个人觉得有必要谈谈了。我们刚开始接触Android的时候...
    忆念成风阅读 8,393评论 2 16
  • 这一个知识点也是写烂了的,可是作为 Android 开发者又不得不学习这部分,学习了呢,总觉得要写点东西出来才觉得...
    墨染书阅读 4,657评论 2 4
  • Android View 虽然不是四大组件,但其并不比四大组件的地位低。而View的核心知识点事件分发机制则是不少...
    Flyzend阅读 52,714评论 39 323
  • :) 简介 本文介绍了用户的点击事件分发到指定的控件的大概流程。android的事件分发也不是几句话就能说清,后文...
    大批阅读 3,736评论 0 0
  • 前天晚上,她给他发了信息,让他决定到底要不要在一起。 在一起是她追的他,她主动热情,他很慢热。 她一直以为他不够主...
    庄舟梦蝶阅读 4,093评论 3 30