Android 中的事件傾聽者 (EventListener)

Android

簡介

使用方法

開發工具

開始寫程式

視覺化介面

視覺元件

對話元件

核心物件

事件處理

資料儲存

查詢功能

影音功能

繪圖功能

網路功能

衛星地圖

特殊功能

資源管理

裝置管理

系統核心

問題與回答

刷機升級

常用軟體

Eclipse

教學錄影

訊息

相關網站

參考文獻

最新修改

簡體版

English

Android 中的事件處理採用 Callback 的機制,預先在視覺物件 View 當中置放事件處理函數,當 Android 系統收到這些事件時,會透過 Callback 機制呼叫這些函數。舉例而言,當 Button 按鈕被按下時,就會觸發 onTouchEvent() 這個函數,因此您可以在視覺化物建中覆蓋掉這些函數,透過 Java 物件導向中的多型機制就能對這些事件進行處理了。

但是,與其讓所有的 View 元件繼承 View 的事件函數,不如將事件包裝為一個物件,稱為事件傾聽者 (Event Listener),然後您只要繼承這些傾聽者並進行修改覆蓋即可。

以下是 Android 的 View 物件中所包含的 EventListener:

事件 傾聽者 說明
onClick() View.OnClickListener 當該元件被觸碰,或者取得焦點並按下 enter 鍵時會被觸發
onLongClick() View.OnLongClickListener 當該元件被長時間按住時會觸發
onFocusChange() View.OnFocusChangeListener 當該元件取得焦點或離開焦點時會被觸發
onKey() View.OnKeyListener 當該元件被進行任何形式的觸碰時會被觸發
onTouch() View.OnTouchListener 當該元件被觸碰,或者取得焦點並按下 enter 鍵時會觸發
onCreateContextMenu() View.OnCreateContextMenuListener 當浮現功能表出現時會被觸發

您可以在 Activity 中使用內部物件 (Nested Class) 或者使用匿名類別 (Anonymous) 處理這些事件,通常您會使用 View.setXXXListener() 這樣的方式設定視覺元件的傾聽者。舉例而言,您可以用 button1.setOnClickListener() 將某個 OnClickListener 設定 button1 元件的觸碰傾聽者,以便處理 button 的 onClick() 事件。

程式撰寫

舉例而言,下列程式就建立了一個傾聽者,以傾聽 corky 這個 button 的 onClick 事件。

// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};
 
protected void onCreate(Bundle savedValues) {
    ...
    // Capture our button from layout
    Button button = (Button)findViewById(R.id.corky);
    // Register the onClick listener with the implementation above
    button.setOnClickListener(mCorkyListener);
    ...
}

您也可以直接將事件處理函數寫在 Activity 當中,如此就不需要額外宣告一個傾聽者物件了,方法如下所示。

public class ExampleActivity extends Activity implements OnClickListener {
    protected void onCreate(Bundle savedValues) {
        ...
        Button button = (Button)findViewById(R.id.corky);
        button.setOnClickListener(this);
    }
 
    // Implement the OnClickListener callback
    public void onClick(View v) {
      // do something when the button is clicked
    }
    ...
}

參考文獻

  1. Handling UI Events — http://developer.android.com/guide/topics/ui/ui-events.html

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License