当前位置: > 科技>正文

android事件传递与分发(android事件传递机制)

2024-10-28 12:42:26 互联网 科技

本篇目录:

1、Android-View的事件分发及拦截-父控件和子控件都处理触摸事件的方式2、Down、up事件的分发过程3、饿了么开源的Android跨进程事件分发框架HermesEventBus

Android-View的事件分发及拦截-父控件和子控件都处理触摸事件的方式

(1) 事件从Activity.dispatchTouchEvent()开始传递,只要没有被停止或拦截,从最上层的View(ViewGroup)开始一直往下(子View)传递。子View可以通过onTouchEvent()对事件进行处理。

在view的相关类中,该方法的主要作用是消费触摸事件。

android事件传递与分发(android事件传递机制)  第1张

InputManager 负责从硬件接收输入事件,并将事件通过 ViewRootImpl 分发给当前激活的窗口处理,进而分发给 View。Window 和 InputManagerService 之间通过 InputChannel 来通信,底层通过 socket 进行通信。

事件的起源:我们都知道触摸事件是从Activity的dispatchTouchEvent方法开始的。再调用父类的super.dispatchTouchEvent(ev),事件向派发。

当为true的时候则说明父控件(也就是viewPager)不拦截事件,点击事件由子控件(也就是webView)来处理,反之为false的时候,父控件则拦截点击事件,子控件无法响应点击事件。

Down、up事件的分发过程

1、首先是onTouch事件的down事件发生,此时,如果长按,触发onLongClick事件;然后是onTouch事件的up事件发生,up完毕,最后触发onClick事件。

android事件传递与分发(android事件传递机制)  第2张

2、Android中对视图的Touch事件进行分发处理。

3、是这样:CLICK是在DOWN和UP事件之后发生,也是就说,如果要发生CLICK事件,必须先发生DOWN和UP事件,比如点一下鼠标(按下再松开),其实就发生了3个事件,顺序是:DOWN-UP-CLICK。

4、比如接着上篇 Android-View的事件分发及拦截机制简单流程先体验再研究(场景?疑问? 具体?待续...) ,小白现在要实现就是子View和父ViewGroup都响应点击事件。

饿了么开源的Android跨进程事件分发框架HermesEventBus

使用Hermes库将event传递给主进程。主进程使用EventBus在主进程内部发送event。主进程使用Hermes库将event传递给所有的子进程。每个子进程使用EventBus在子进程内部发送event。

android事件传递与分发(android事件传递机制)  第3张

来自Facebook — React Native是一种开源框架,从Facebook的React Java框架派生而来,众所周知,Java框架取代了早些时候的HTML5基础。

事件流编程,EventBus、RxJava。Kotlin语言。DataBinding,Google的这个MVVM框架实现的很完全,很强大,包括像Angular中自定义directive/filter的类似feature。知道Volley,okHttp他们的应用场景。

到此,以上就是小编对于android事件传递机制的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

事件

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本站联系的,一经查实,本站将立刻删除。