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://blog.csdn.net/imyang2007?viewmode=contents",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://blog.csdn.net/imyang2007?viewmode=contents",Toast.LENGTH_LONG).show(); } }
下图为运行效果:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值