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」。如下图:

Android事件监听器(Event Listener)


注册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,"https://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,"https://www.linuxidc.com",Toast.LENGTH_LONG).show();        }   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppxzf.html