Android事件监听器Event Listener

在 Android 中,我们可以通过事件处理使UI与用户互动(UI Events)。

UI的用户事件处理,即View处理用户的操作,在应用程序中几乎不可避免。View是重要的类,它是与用户互动的前线;在Android框架的设计中,以事件监听器(event listener)的方式來处理UI的用户事件。

Android框架提供了非常良好的UI事件处理机制。View是绘制UI的类,每个View对象都可以向Android框架注册一个事件监听器。每个事件监听器都包含一个回调函数(callback method),这个回调函数(callback method)主要的工作就是回应或处理用户的操作。

Event Listener: Click Listener例子

以「用户触碰(touch)」的动作來說,当View要处理用户触碰的事件时,就要向Android框架注册View.OnClickListener事件监听器;当「touch」事件发生时,Android框架便回调事件监听器里的回调函數。

View.OnClickListener是click listener,顾名思义,这是UI的「Click动作监听器」;当用户对View进行Click操作时(即触控上的UI组件),Android框架便会回调这个View.OnClickListener的回调函數。

View.OnClickListerner的回调函数为onClick()。

这里所提到的监听器泛指event listener,主要用來「监听」用户的各种动作。除了View.OnClickListener外,Android框架还有以下的event listener(及其callback method):

View.OnLongClickListener: onLongClick()

View.OnFocusChangeListener: onFocusChange()

View.OnKeyListener: onKey()

View.OnTouchListener: onTouch()

View.OnCreateContextMenuListener: onCreateContextMenu()

另外一种UI事件的机制为事件处理器(event handler),event handler与event listener是不一样的处理机制。这个留着以后再研究。

以Android所提供的View.OnClickListener來说明程序实现方法。一个较为良好的实现方法是在Acitivty类里实现View.OnClickListener界面,即:

public  class  YypClickListenerActivity  extends  Activity  implements  View.OnClickListener{

...

}

上面的代码用到了面向对象的接口技术,每一个View都可以注册一个event listener,当Android框架收到「click」事件后,便回调event listener的callback method。以Button类为例,当我们想要处理用户触控按钮事件时,就要调用Button类的setOnClickListener()方法来注册click listener。上述的实现方法是,直接在的Activity类YypClickListenerActivity里实现View.OnClickListener,因此上述Button类的click listener为「this」。如下图:

注册click listener的程序代码如下:

Button button = (Button)findViewById(R.id.btn);

button.setOnClickListener( this );

在onCreate()里先找到Button组件,它的click listener为this,接着在的Activity类里实现onClick()。onClick()方法的代码如下,我们以Toast类來回应信息給用户:

public  void  onClick(View v){

Toast.makeText( this , "http://www.linuxidc.com" ,Toast.LENGTH_LONG).show();

}

完整的代码很简单:

package  com.android;

import  android.app.Activity;

import  android.os.Bundle;

import  android.view.View;

import  android.widget.Button;

import  android.widget.Toast;

public  class  YypClickListenerActivity  extends  Activity  implements  View.OnClickListener{

/** Called when the activity is first created. */

@Override

public  void  onCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

setContentView(R.layout.main);

Button button = (Button)findViewById(R.id.btn);

button.setOnClickListener( this );

}

public  void  onClick(View v){

Toast.makeText( this , "http://www.linuxidc.com" ,Toast.LENGTH_LONG).show();

}

}

时间: 2024-10-23 02:18:45

Android事件监听器Event Listener的相关文章

mui执行滑动事件: Unable to preventDefault inside passive event listener

使用MUI框架,在上拉加载和下拉刷新的时候会出现下面的异常: [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080 解决办法: 方法1)在touch的事件监听方法上绑定第三个参数{ passive: false },

Android 事件与事件监听器

Android系统中常见的事件监听器有如下几种: 1.单击事件(View.OnClickListener):当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的处理方法是onClick(). 2.焦点事件(View.OnFocusChangeListener):组件得到或者失去焦点时产生该事件,事件处理方法是onFocusChange(). 3.按键事件(View.OnKey Listener):用户按下或者释放设备上的某个按键时产生,事件处理方法是 onKey(). 4.触碰事件(Vie

Android笔记二十三.Android基于事件监听器处理机制

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.Android的事件处理 Android事件处理包括两个部分:Android事件处理机制(基本)和Android消息传递机制(进阶).前者包含三种处理方式,即基于监听的事件处理.基于回调的事件处理.直接绑定到标签;后者包含两种处理方式,即Handler消息传递.异步任务处理. 1.Android的事件处理机制 (1)基于监听的事件处理方式 通常做法是为Android界面组件绑定特定的事件监听

Hibernate拦截器(Interceptor)与事件监听器(Listener)

拦截器(Intercept):与Struts2的拦截器机制基本一样,都是一个操作穿过一层层拦截器,每穿过一个拦截器就会触发相应拦截器的事件做预处理或善后处理. 监听器(Listener):其实功能与拦截器是相似的,但它实现原理不同,它是为每一个事件注册一个或多个监听器,一旦事件发生,则事件源通知所有监听该事件的监听器,然后监听器处理通知(观察者模式). 拦截器 Hibernate为我们提供了实现拦截器的接口org.hibernate.Interceptor,它里面提供了许多拦截事件.通常不需要实

android之onclick事件及为adapter设置事件监听器

Android 的onclik事件的实现有三种写法: 1 package com.example.oncliek; 2 3 import android.app.Activity; 4 import android.content.Context; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import

Android进程间通信之内部类作为事件监听器

在Android中,使用内部类可以在当前类里面发用改监听器类,因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件.以下是一个调用系统内部类实现短信发送的一个例子: SMS类: package com.example.msmlistener; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.telephony.Sm

Java设计模式补充:回调模式、事件监听器模式、观察者模式(转)

一.回调函数 为什么首先会讲回调函数呢?因为这个是理解监听器.观察者模式的关键. 什么是回调函数 所谓的回调,用于回调的函数. 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数. 有这么一句通俗的定义:就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法. 举个例子: 这里有两个实体:回调抽象接口.回调者(即程序a) 回调接口(ICallBack ) public i

android事件传递机制详解

本篇内容将结合Android源码来分析Android的事件传递机制.众所周知,点按.滑动.触摸构成了Android等智能设备的基本操作,几乎所有的应用都通过对触摸屏的操作来进行应用程序的使用.那么,在Android中,触摸事件是如何响应及传递的呢,通过本篇内容你将有一个初步的了解. 实验环境 OS X 10.9 Eclipse(ADT) Android源码版本:API Level 19(Android 4.4) Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点

Android事件传递机制(转)

Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都由如下三个部分作为基础: 按下(ACTION_DOWN) 移动(ACTION_MOVE) 抬起(ACTION_UP) 所有的操作事件首先必须执行的是按下操作(ACTIONDOWN),之后所有的操作都是以按下操作作为前提,当按下操作完成后,接下来可能是一段移动(ACTIONMOVE)然后抬起(ACTI