Android事件监听器和回调方法

  • 内容
  • 评论
  • 相关

事件是 Android 平台与用户交互的手段。当用户对手机进行操作时,会产生各种各样的输入事件,Android 框架捕获到这些事件,进而进行处理。

Android 平台提供了多种用于获取用户输入事件的方式,考虑到用户事件都是在特定的用户界面中产生的,因此 Android 选用特定 View 组件来获取用户输入事件的方式,由 View 组件提供事件的处理方法。这就是为什么 View 类内部带有处理特定事件的监听器。

事件监听器

监听器用于对特定事件进行监听,一旦监听到特定事件,则由监听器截获该事件,并回调自身的特定方法对事件进行处理。

在教程之前的实例中,我们使用的事件处理方式都是监听器。根据用户输入方式的不同,View 组件将截获的事件分为 6 种,对应以下 6 种事件监听器接口。

1) OnClickListener 接口

此接口处理的是单击事件,例如,在 View 上进行单击动作,在 View 获得焦点的情况下单击“确定”按钮或者单击轨迹球都会触发该事件。

当单击事件发生时,OnClickListener 接口会回调 public void onClick(View v) 方法对事件进行处理。其中参数 v 指的是发生单击事件的 View 组件。

2) OnLongClickListener 接口

此接口处理的是长按事件,当长时间按住某个 View 组件时触发该事件。

其对应的回调方法为 public boolean onLongClick(View v),当返回 true 时,表示已经处理完此事件,若事件未处理完,则返回 false,该事件还可以继续被其他监听器捕获并处理。

3) OnFocusChangeListener 接口

此接口用于处理 View 组件焦点改变事件。当 View 组件失去或获得焦点时会触发该事件。

其对应的回调方法为 public void onFocusChange(View v, Boolean hasFocus),其中参数 v 表示产生事件的事件源,hasFocus 表示事件源的状态,即是否获得焦点。

4) OnKeyListener 接口

此接口用于对手机键盘事件进行监听,当View获得焦点并且键盘被敲击时会触发该事件。

其对应的回调方法为 public boolean onKey(View v, int keyCode, KeyEvent event)。

方法参数说明:

  • keyCode 为键盘码。
  • event 为键盘事件封装类的对象。

5) OnTouchListener 接口

此接口用来处理手机屏幕事件,当在 View 的范围内有触摸、按下、抬起、滑动等动作时都会触发该事件,并触发该接口中的回调方法。

其对应的回调方法为 public boolean onTouch(View v, MotionEvent event),对应的参数同上。

6) OnCreateContextMenuListener 接口

此接口用于处理上下文菜单被创建的事件。

其对应的回调方法为 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo info),其中参数 menu 为事件的上下文菜单,参数 info 是该对象中封装了有关上下文菜单的其他信息。

在之前Android菜单教程实例 MenusDemo 中(网址:http://c.biancheng.net/view/3035.html),创建上下文菜单使用的是 registerForContextMenu(View v)方法,其本质是为 View 组件 v 注册该接口,并实现了相应的回调方法。

回调事件响应

在 Android 框架中,除了可以使用监听器进行事件处理之外,还可以通过回调机制进行事件处理。

Android SDK 为 View 组件提供了 5 个默认的回调方法,如果某个事件没有被任意一个 View 处理,就会在 Activity 中调用响应的回调方法,这些方法分别说明如下。

名称 说明/作用 调用时间 参数说明 返回值说明
public boolean onKeyDown(int keyCode, KeyEvent event) 接口 KeyEvent.Callback 中的抽象方法 键盘按键被按下时由系统调用
keyCode 即键盘码,系统根据键盘码得知按下的是哪个按钮。

本文标题:Android事件监听器和回调方法

本文地址:https://www.hosteonscn.com/4988.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注