Android提供了强大的事件处理机制,它包括两套处理机制:
1.基于监听的事件处理
2.基于回调的事件处理
对于Android基于监听的事件处理,主要的做法是为Android界面组件绑定特定的事件监听器。
对于Android基于回调的事件处理,主要的方法是重写Android组件特定的回调方法或者重写
Activity的回调方法
一、基于监听的事件处理
在事件监听的处理模型中,主要涉及如下三类对象:
1.Event Source(事件源):事件发生的场所,通常就是各个组件、例如按钮、窗口、菜单等。
2.Event(事件):事件封装了界面组件上发生的特定事情(通常就是一次用户操作)。
3.Event Listener(事件监听器):扶着监听事件源所发生的事件,并对各种事件做出相应的响应。
事件处理流程示意图如下:
内部类可以作为事件监听器类,如果某个监听器要被多个GUI界面所共享我们可以使用外部类
作为事件监听器类,还有一种是匿名内部类作为事件监听器类,这里就不详细介绍了。
Android还中还有一种更简单的绑定事件监听器的方式,直接在界面布局中为指定的标签绑定事件处理方法。
如:android:onClick="clickHandler",这样就意味着开发者需要在该界面布局对应的Activity中定义一个void clickHandler(View source),该方法将会处理该按钮上的单击事件。
下面我们来看一段Java代码:
[java]
public class Ex003_01Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//定义一个事件的处理方法
//轻重source参数代表事件源
public void clickHandler(View source){
TextView show=(TextView)findViewById(R.id.tv);
show.setText("bn按钮被点击了");
}
}
}
二、基于回调事件处理
从代码的实现的角度来看,基于回调的事件处理模型更加简单。如果说事件监听制是一种委托式的事件处理,那么回调机制恰好与之相反:对于基于回调机制的事件处理模型来说,事件源与事件监听器是统一的。为了使用回调机制类处理GUI组件上所发生的事件,我们需要为该组件提供对应的事件处理方法--而Java又是一种静态语言,我们无法为某个对象动态的添加方法,因此只能继承GUI组件类,并重写该组件类的事件处理方法来实现。
为了实现回调机制的事件处理,Android为所有的GUI组件都提供了一些事件处理的回调方法,以View为例,该类包含如下方法:
boolean onKeyDown(int keyCode,KeyEvent event):当用户在该组件上按下某个键时触发的方法。
boolean onKeyLongPress(int keyCode,KeyEvent event):当用户在该组件上长按某个按钮时触发该方法。
boolean onKeyShortcut(int keyCode,KeyEvent event): 当一个快捷键事件发生时触发该放过。
boolean onKeyUp(int keyCode,KeyEvent event):当用户在该组件上松开某个按键时触发该方法
boolean onTouchEvent(MotionEvent event):当用户在该组件上触发触摸屏事件时触发该方法。
boolean onTrackballEventI(MotionEvent event):当用户在该组件上触发轨迹球屏事件时触发该事件。
下面我们来看一段代码:
[java]
public class MyButton extends Button
{
public MyButton(Context context , AttributeSet set)
{
super(context , set);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyDown(keyCode , event);
Log.v("-crazyit.org-" , "the onKeyDown in MyButton");
//返回true,表明该事件不会向外扩散
return true;
}
}
上面的代码我们重写了Button类的onKeyDown(int keyCode,KeyEvent event)方法,该方法将会负责处理按钮上的键盘事件。
基于回调的事件传播
几乎所有的基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件:
1.如果返回true,则表明该处理方法已完全处理了该事件,该事件不会被传播出去。
2.如果返回false,表明该处理方法未完全处理该事件,该事件会传播出去。
对于基于回调的事件处理传播而言,某组件上所发生的事情不仅激发该组件上的回调方法,也会触发该组件所在的Activity的回调方法——只要事件能传播到该Activity。
分享到:
相关推荐
Android事件处理机制
在Android应用程序中,有一类特殊的消息,是专门负责与用户进行交互的,它们就是触摸屏和键盘等输入事件。触摸屏和键盘事件是统一由系统输入管理器InputManager进行分发的。也就是说,InputManager负责从硬件接收...
Android事件处理机制是Android应用程序开发中的关键组成部分,它使得用户与应用之间能够进行有效的交互。在Android系统中,事件处理主要包括触摸事件、键盘事件、广播事件等,这些事件的处理方式直接影响到应用的...
本文将深入探讨“android之Touch事件处理机制测试”,包括滑动事件冲突的解决、ViewGroup中的事件触发和传递机制。 一、Android Touch事件处理机制 1. 触摸事件流程:在Android中,触摸事件分为三个阶段,即ACTION...
在Android应用开发中,事件处理机制是至关重要的组成部分,它涉及到用户与应用程序的交互,包括点击、滑动等各类操作。本示例"Android 事件处理机制 demo"将深入探讨这一主题,通过实际代码演示如何有效地管理和响应...
在Android系统中,触摸事件的处理是通过一个复杂的分发机制来实现的,这个机制确保了用户在屏幕上点击或滑动时,相应的视图能够正确地接收到并响应这些动作。下面将详细介绍Android中触摸事件的分发机制,以及如何在...
### Android的事件处理机制 #### 一、概述 在Android应用开发中,用户与界面的交互至关重要。良好的用户体验往往依赖于应用对用户操作快速而准确的响应。这背后的核心技术便是**事件处理机制**。本文将详细介绍...
在Android开发中,View事件分发处理机制是开发者必须深入理解的重要概念,它涉及到用户与界面交互时的各种点击、滑动等操作的响应流程。本文将详细解析Android View事件分发处理机制,并通过一个名为"TestEventFlow...
事件分发机制是Android系统处理用户触摸事件的关键流程,理解这一机制对于优化UI交互和处理复杂视图层次结构至关重要。本文将深入探讨Android点击事件的分发过程,包括事件的产生、传递和处理。 首先,当用户在屏幕...
总结来说,Android的广播事件处理机制是应用程序与系统或其它应用间通信的重要方式。通过发送广播Intent和注册Broadcast Receiver,开发者能够响应系统级别的事件,或者自定义广播事件,实现应用间的交互。同时,...
Android 的事件分发机制是 Android 触摸事件处理的核心部分,对于理解用户交互至关重要。触摸事件处理涉及到三个关键方法:`onTouchEvent()`, `onInterceptTouchEvent()`, 和 `dispatchTouchEvent()`。本文将通过一...
Android事件处理机制主要涉及三类对象:事件(Event)、事件源(Event Source)和事件监听器(EventListener)。在本主题中,我们将深入探讨`ViewGroup`的事件传递,即事件分发过程。 1. **事件模型** Android事件...
了解并熟练掌握事件分发、拦截和处理机制对于优化用户体验和实现高级交互至关重要。开发者可以根据实际需求调整这些机制,以实现更加灵活的用户界面。通过分析`OntouchTest`的代码,你可以更深入地理解这一过程,并...
在Android系统中,事件分发机制是用户与应用程序交互的核心环节。它决定了用户在屏幕上点击、滑动等操作如何被正确地处理和响应。本文将深入探讨Android事件分发机制,帮助开发者理解这一关键概念。 首先,我们从...
在Android系统中,触摸事件是用户与应用交互的重要方式,理解其事件传递机制对于优化UI交互和处理复杂触摸逻辑至关重要。本文将深入解析Android的Touch事件传递机制,并结合源码进行详细阐述。 首先,Android的触摸...
android:id="@+id/toggleButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_close"/> android:id="@+id/imageButton01" android:layout_...
在Android开发中,广播事件(Broadcast)是一种全局的消息传递机制,允许应用程序之间或者系统与应用程序之间进行通信。在本文中,我们将深入探讨如何使用Delphi这个强大的RAD(快速应用开发)工具来处理Android系统...
在Android系统中,触摸事件(Touch Events)是用户与设备交互的主要方式,它涉及到了复杂的事件传递机制。本文将深入探讨Android的触摸事件处理流程,包括事件的产生、分发以及处理过程,以实例的形式帮助开发者理解...
在Android系统中,事件处理和多线程的运用是至关重要的。本文将深入探讨Android的事件传递机制,尤其是基于回调和监听接口的方式,以及多线程处理在Android平台上的实现。 首先,Android事件处理主要围绕Input子...