Android 事件分发机制

一.事件分发基础认知

  • 事件分发的对象是谁:点击事件(Touch事件)

  • 定义:当用户触摸屏幕时(View 或 ViewGroup派生的控件),将产生点击事(Touch事件)

Touch事件的相关细节(发生触摸的位置、时间等)被封装成MotionEvent对象

  • 事件类型
事件类型具体动作
MotionEvent.ACTION_DOWN按下View(所有事件的开始)
MotionEvent.ACTION_UP抬起View(与DOWN对应)
MotionEvent.ACTION_MOVE滑动View
MotionEvent.ACTION_CANCEL结束事件(非人为原因)
  • 事件序列 (从手指接触屏幕 至 手指离开屏幕,这个过程产生的一系列事件)

注:一般情况下,事件列都是以DOWN事件开始、UP事件结束,中间有无数的MOVE事件
这里写图片描述

  • 事件分发的本质

    将点击事件(MotionEvent)传递到某个具体的View & 处理的整个过程
    即 事件传递的过程 = 分发过程。

  • 事件在哪些对象之间进行传递?

    Android的UI界面由Activity、ViewGroup、View 及其派生类组成

  • 事件分发的顺序
    即 1个点击事件发生后事件传递的顺序:Activity-> ViewGroup-> View

    这里写图片描述

  • 事件分发过程由哪些方法协作完成?

    如下

方法作用调用时刻
dispatchTouchEvent()分发(传递)事件当点击事件能够传递给当前事件时,就会调用
onInterceptTouchEvent()处理点击事件在dispathTouchEvent 内部调用
onTouchEvent()判断是否拦截某个事件(只存在于ViewGroup,普通View没有该方法)在ViewGroup 的dispathTouchEvent 内部调用

二.事件分发机制 源码分析

Android事件分发流程 = Activity -> ViewGroup ->View

即:1个点击事件发生后,事件先传到Activity、再传到ViewGroup、最终再传到 View

从上可知,要想充分理解Android分发机制,本质上是要理解:

  • Activity对点击事件的分发机制
  • ViewGroup对点击事件的分发机制
  • View对点击事件的分发机制

Activity事件的分发机制
这里写图片描述

ViewGroup事件的分发机制

从上面Activity事件分发机制可知,ViewGroup事件分发机制从dispatchTouchEvent()开始

这里写图片描述

核心方法总结
这里写图片描述

View事件的分发机制

这里写图片描述

注:onTouch()的执行 先于 onClick()

这里写图片描述

总结

这里写图片描述

工作流程 总结

这里写图片描述

以角色为核心的图解说明

这里写图片描述

以方法为核心的图解说明

这里写图片描述

本文内容来源于大神 Carson_Ho 。原文地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值