2.基于回调的事件处理机制

1.方法回调

一种解耦合的设计思想:分离 功能定义 与 功能。在Java中回调是通过接口来实现的,达到接口统一,实现不同。


2.回调机制概述

   对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,当事件源发生特定事件之后,该事件还是由事件源本身负责处理的。

   为了实现回调机制的事件处理,Android为所有GUI组件提供了一些事件处理的回调方法,以View为例:

          boolean onKeyDown(int keyCode,KenyEvent enent):当用户在该组件上按下某个键时触发的方法。

          boolean onKeyLongPress(int keyCode,KeyEvent event):当用户在该组件上长按某个按键时触发的方法。

          boolean onKeyShortcut(int keyCode,KeyEvent event):当一个键盘快捷键事件触发时 触发的方法。

          boolean onKeyUp(int keyCode,KeyEvent event):当用户在该组件上松开某个按键时触发的方法。

          boolean onTouchEvent(MotionEvent event):当用户子在该组件上触发触摸屏事件时 触发的方法。

          boolean onTrackballEvent(MotionEvent event):当用户在该组件上触发轨迹球屏事件时触发该方法。


  总结:事件回调,UI组件不但是事件源,而且还是事件监听器,通过UI组件的相关回调方法处理对应的事件

          (重写UI组件或者Activity的回调方法,用于处理一些具有通用性的事件)

            eg:事件(着火)——事件源|事件监听器(商场)


3.基于回调的事件传播

    1)几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件:

             1.如果返回true,表明该处理方法已完全处理该事件,该事件不会传播出去。

             2.如果返回false,表明该处理方法并未完全处理事件,该事件会传播出去。

    2)对于基于回调的事件传播而言,某组件上所发生的事情不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调用法【前提是只要           事件能传播到该Activity】

    3)要使用回调事件,则要自定义组件,重写其回调方法。


4.事件处理的顺序

    触发组件绑定的事件监听——》触发组件提供的事件回调——》传播到该组件所在的Activity

    即:监听器--->view组件的回调方法--->Activity的回调方法


5.基于回调的onTouchEvent

    1)同样是触碰事件,但是onTouchEvent更多的是用于自定义的view,所有的view类中都重写了该方法,而这种触摸事件是基于回调的

    2)onTouchEvent其实和onTouchListener是类似的,只是处理机制不用,前者是回调,后者是监听模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回顾 在3.1中我们对Android基于监听的事件处理机制进行了学习,简单的说就是 为我们的事件源(组件)添加一个...
    pifoo阅读 4,988评论 1 5
  • 本节引言 在3.1中我们对Android中的一个事件处理机制——基于监听的事件处理机制进行了学习,简单的说就是 为...
    侯蛋蛋_阅读 3,709评论 0 1
  • 1 概述 当Android系统捕获到触摸事件后,如何准确地传递给真正需要这个事件的View呢?Android系统给...
    小芸论阅读 10,548评论 2 38
  • 林雯选的是靠窗的位置,从飞机上俯视着美利坚的大地,心里五味杂陈。她也曾多次问自己,来美利坚到底是为了什么?回想起了...
    冉染阅读 1,859评论 1 0
  • 清晨风微凉背着阳光行走悬铃木的虬枝根根直插苍穹湛碧的天空瓦蓝蓝无一丝云也无一缕风一颗颗经霜斗雪的沧桑果实此刻不动声...
    暮暮蜜阅读 1,053评论 5 1