歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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界面,即:

  1. public class YypClickListenerActivity extends Activity implements View.OnClickListener{  
  2.   ...  
  3. }  
上面的代碼用到了面向對象的接口技術,每一個View都可以注冊一個event listener,當Android框架收到「click」事件後,便回調event listener的callback method。以Button類為例,當我們想要處理用戶觸控按鈕事件時,就要調用Button類的setOnClickListener()方法來注冊click listener。上述的實現方法是,直接在的Activity類YypClickListenerActivity裡實現View.OnClickListener,因此上述Button類的click listener為「this」。如下圖:

注冊click listener的程序代碼如下:
  1. Button button = (Button)findViewById(R.id.btn);  
  2. button.setOnClickListener(this);  
在onCreate()裡先找到Button組件,它的click listener為this,接著在的Activity類裡實現onClick()。onClick()方法的代碼如下,我們以Toast類來回應信息給用戶:
  1. public void onClick(View v){  
  2.     Toast.makeText(this,"http://www.linuxidc.com",Toast.LENGTH_LONG).show();   
  3. }  
完整的代碼很簡單:
  1. package com.android;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.Button;  
  7. import android.widget.Toast;  
  8.   
  9. public class YypClickListenerActivity extends Activity implements View.OnClickListener{  
  10.     /** Called when the activity is first created. */  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.           
  16.         Button button = (Button)findViewById(R.id.btn);  
  17.         button.setOnClickListener(this);  
  18.     }  
  19.       
  20.     public void onClick(View v){  
  21.         Toast.makeText(this,"http://www.linuxidc.com",Toast.LENGTH_LONG).show();   
  22.     }  
  23. }  

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved