Android事件分发机制

左手的ㄟ右手 2022-04-18 02:10 378阅读 0赞

事件分发机制

在我们要详细了解这个东西的时候,首先要对它有一个最基础的认知,事件分发是干嘛的?分发的对象又是什么?接下来以一段伪代码来给大家解释什么是事件分发和它分发的对象。

事件分发是干嘛的?

  1. public boolean dispatchTouchEvent(MotionEvent event) {
  2. boolean consume = false;
  3. if (onInterceptTouchEvent(event)) {
  4. consume = onTouchEvent(event);
  5. } else {
  6. consume = child.dispatchTouchEvent(event);
  7. }
  8. return consume;
  9. }

从这段代码中我们可以开出来在dispatchTouchEvent先调用ViewGroup自身的onInterceptTouchEvent方法来判断自己是否拦截,如果拦截了就调用自己的onTouchEvent方法,如果方法返回true这次事件就算被消耗,事件分发到此为止,如果返回false就会往上一层返回处理,如果当前的ViewGroup的onInterceptTouchEvent返回false就会调用它的子view的dispatchTouchEvent方法,这样事件就又传递下去了,如果子view处理不了,那么还会回来调用ViewGroup的onTouchEvent方法(这一点没有在代码里体现出来,接下来举一个通俗的例子来帮助大家理解)

领导接到了一个任务,但是领导并不想自己去动手做,于是就交给了手下小A,小A的属性就是有任务就接(能不能干另说),如果任务简单,小A独立完成了那么事件分发就完成了,如果小A任务没有完成就会返回给领导,领导手底下还没有人解决问题,那就只有领导干了,然后领导开始接手、解决了问题,事件分发结束。

事件分发的对象是什么?

事件分发的对象是:点击事件(Touch事件) 。ps:当用户触摸屏幕(view或是viewgroup中的控件)时就会产生点击事件。

事件类型有:按下(MotionEvent.ACTION_DOWN)、抬起(MotionEvent.ACTION_UP)、滑动(MotionEvent.ACTION_MOVE)、结束(MotionEvent.ACTION_CANCEL)。

ps:一般情况下事件分发都是以按下开始,抬起结束,中间又有无数的移动事件。

画图说明:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDc4MzMxNQ_size_16_color_FFFFFF_t_70

事件分发的本质是什么?

事件分发就是将一个事件传递到一个具体的view进行处理的一个过程(上边有举例说明)。

事件分发在哪些对象间进行传递?

事件分发在 Activity ViewGroup View 这三个对象间传递,三者关系如下图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDc4MzMxNQ_size_16_color_FFFFFF_t_70 1

以上就是本人对分发机制的理解了,如果有不足的地方可以在评论区留言,大家一起学习进步。

发表评论

表情:
评论列表 (有 0 条评论,378人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android事件分发机制

    在触摸屏幕的过程中,要涉及到和控件的交互,如何处理多个控件之间的事件处理,保证正常的交互效果。我们今天来看事件分发机制。 零、事件分发的一些基础知识 什么是事件?

    相关 Android事件分发机制

    在触摸屏幕的过程中,要涉及到和控件的交互,如何处理多个控件之间的事件处理,保证正常的交互效果。我们今天来看事件分发机制。 零、事件分发的一些基础知识 什么是事件?

    相关 Android事件分发机制

    Android事件分发机制    就是一个触摸事件发生了,从一个窗口传递到下一个视图,在传递到另一个视图,最后被消费的过程,在android中还是比较复杂的传递流程:   

    相关 Android 事件分发机制

    前言 说到这个事件分发机制呢,我觉得一直以来都是我的弱项,可能它太抽象了,也与我在实际项目中没怎么使用到过,也没自定义过view有着很大的关系。虽然在面试过程中事件分发是必不

    相关 Android事件分发机制

    事件分发机制 在我们要详细了解这个东西的时候,首先要对它有一个最基础的认知,事件分发是干嘛的?分发的对象又是什么?接下来以一段伪代码来给大家解释什么是事件分发和它分发的对