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();   

    }  

}  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。