Android view分析(三)---事件分发流程

本文探讨了Android的事件分发机制,详细介绍了dispatchTouchEvent、onTouchEvent和onInterceptTouchEvent等关键方法的作用。针对不同组件(View、ViewGroup、Activity)的事件处理差异进行了阐述,并列举了MotionEvent中的事件类型,如ACTION_DOWN、ACTION_UP等。同时,通过一个完整的事件分发流程图,解释了当所有方法返回super时,按下和抬起事件的不同处理方式。
摘要由CSDN通过智能技术生成

android的事件分发机制应该是使用最常见的,但是也是比较乱的部分了,只要是和用户交互的部分都是涉及事件分发机制的。
主要涉及的方法:
dispatchTouchEvent():分发
onTouchEvent:处理事件
onInterceptTouchEvent:拦截事件

View只有dispatchTouchEvent、onTouchEvent两个方法
ViewGroup有dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三个方法
Activity只有dispatchTouchEvent、onTouchEvent两个方法

事件类型都是定义在MotionEvent中:
ACTION_DOWN:按下,down事件肯定会全部传递下去,没法拦截,长按事件是在down中出现的,长按超过500ms的时候就是长按事件了

ACTION_UP:抬起

ACTION_MOVE:移动

ACTION_CANCEL:滑动从控件滑到控件外面

ACTION_OUTSIDE:必须先设置接收外面点击事件flag,才能接收该事件,比如dialog

ACTION_POINTER_DOWN:多点触控,按下

ACTION_POINTER_UP:多点触控,抬起

获取事件类型的方法:
getAction():包含pointer的事件index和事件类型
getActionMask():仅包含事件类型

整体分发事件图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值