標籤:android http os sp on cti bs 代碼 工作
在 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();
}
}
Android事件監聽器Event Listener