Android講義—Android事件概述

Android提供2種方式的事件處理:

1:基於回調

2:基於監聽

基於監聽的處理模型

1:事件源—EventSource:事件發生的場所,通常是各個組件,例如按鈕,菜單,窗口等。

2:事件—Event:事件封裝瞭界面組件發生的特定事件。

3:事件監聽器—EventListener:負責監聽事件源的事件。

Android的事件處理機制是委派式的處理方式:普通組件(事件源)將整個事件處理委托給特定的對象(事件監聽器)。

委派的方式可以把事件源的所有可能發生的事件授權不同的事件監聽器處理,同時也可以讓一類事件都使用同一個監聽器處理。

事件處理流程圖:

Android為不同的界面組件提供不同的監聽接口

例如:

View.OnClickListener:單擊事件的事件監聽接口

View.OnCreateContextMenuListener:創建上下文菜單事件的事件監聽接口

View.onFocusChangeListener:焦點改變事件的事件監聽接口

View.OnKeyListener:按鍵事件的事件監聽接口

View.OnLongClickListener:長按事件的事件監聽接口

View.OnTouchListener:觸摸事件的事件監聽接口

實現監聽器的通常幾種形式:

內部類形式:將事件監聽器類定義成當前的內部類

例如:

b1.setOnClickListener(new MyClickListener());

其中,MyClickListener是一個是一個實現單擊監聽的內部類,格式如下

private class MyClickListener implements View.OnClickListener

{

@Override

public void onClick(View view)

{

}

}

外部類形式:將事件監聽器類定義成一個外部類

其實,外部類的格式跟內部類一樣,隻是外部類是一個獨立的類,一般不跟UI有關系,例如是一種純功能的監聽器,例如發送短信,郵件等等。

Activity本身作為事件監聽類:讓Activity本身實現監聽接口,並實現事件處理方法

例如 public class MainActivity extends Activity implements OnClickListener

{

……

@Override

public void onClick(View view)

{

}

}

匿名內部類形式:使用匿名內部類創建監聽器對象

這是最常見的。

例如:

b1.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View view)

{

}

});

還有一種是直接在XML的onClick屬性指定方法。

基於回調的處理模型

所謂回調,實際是系統回調,隻要繼承GUI組件類,並重寫特定的事件處理方法,即可以實現。

以View為例,例如,用戶在該組件上按下某一個按鈕,則系統回調onKeyDown,長按則回調onKeyLongPress,等等。

回調的返回問題:

如果返回true,說明該方法已經完全處理該事件,該事件不會傳播出去。

如果返回false,說明該方法沒有完全處理該事件,該事件會傳播出去。

You May Also Like