Android事件分发机制

本文详细介绍了Android事件分发机制,从Activity、ViewGroup到View层层剖析。阐述了Activity的dispatchTouchEvent和onTouchEvent方法,以及ViewGroup的onInterceptTouchEvent和onTouchEvent方法在事件分发中的作用。事件传递顺序通常为:Activity -> ViewGroup -> View,文中还探讨了事件拦截与消费的区别,并给出了完整的事件分发流程图。
摘要由CSDN通过智能技术生成

事件分发机制

事件分发机制是 Android 开发者的必备技能,关于这方面的博客也有很多,最近准备夯实一下自己的基础知识,整理一下零散的知识点,为突破做准备,所以再来梳理一下事件分发机制。

大多介绍事件分发机制的文章都只叙述了 View 与 ViewGroup 的事件分发机制,我这里将从 Activity 开始介绍。
一般来说,事件传递的顺序是:Activity -> ViewGroup -> View。

那么我们先说 Activity。

Activity 中的事件分发机制

Activity 中包含两个事件分发与处理的方法:

//事件分发
public boolean dispatchTouchEvent(MotionEvent ev);
//事件消费
public boolean onTouchEvent(MotionEvent event);

我们知道,事件最先是传到 Activity 中,然后在其内部分发之后再传递给ViewGroup 。也就是说 ViewGroup 中的事件上游其实是 Activity,但实际上,ViewGroup 事件的上游不仅仅可以是 Activity,还可以是 Dialog,更进一步的说:ViewGroup 事件的上游是一个 Window。

我这里只介绍 Activity 中的事件分发机制,其它的有兴趣可以自行阅读源码。
首先,Activity 中的事件同样起源于 dispatchTouchEvent 方法:

public boolean dispatchTouchEvent(MotionEvent ev) {
   
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
   
        onUserInteraction();
    }
    if (getWindow().superDispatchTouchEvent(ev
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值