Android基於回調的事件處理,android回調事件
摘要:不管是案頭應用還是手機應用,面對最多的就是使用者,經常需要處理的就是使用者動作–也就是需要為使用者動作提供響應。這種為使用者動作提供響應的機制就是事件處理。
Android提供了強大的事件處理機制,包括兩套事件處理機制:
**–>基於監聽的事件處理
–>基於回調的事件處理**
基於監聽的事件處理平時用的比較多,比較熟悉了,這裡記錄一下我不熟悉的基於回調的事件處理。
對於基於回調的事件處理模型來說,事件來源和事件監聽器是統一的,或者說事件監聽器完全消失了。當使用者在GUI組件上激發某個事件時,組件自己特定的方法將會負責處理該事件。
基於回調的事件處理機制可通過自訂View類來實現,自訂View時重寫該View的事件處理方法即可。下面是一個自訂按鈕的實作類別。
public class MyButton extends Button{ public MyButton(Context context , AttributeSet set) { super(context , set); } @Override public boolean onKeyDown(int keyCode , KeyEvent event) { super.onKeyDown(keyCode , event); Log.v("----" , "基於回調的執行個體"); return true; }}
在我們自訂的Button中,重寫了onKayDown方法,該方法會負責處理按鈕上的鍵盤事件。
在xml檔案中使用MyButton組件時:
<com.caiyun.MyButton android:layout_height="wrap_content" .... />
com.caiyun.MyButton是MyButton類完整的類名。使用自訂的類時,都要用完整的類名哦!
這樣定義之後,無需在java程式中為按鈕綁定監聽器–因為按鈕自己重寫了onKeyDown(int keyCode , keyEvent event)方法,這以為著按鈕將會自己處理相應的事件。
小結:對於監聽的事件處理模型來說,事件來源和事件監聽器是分離的,當事件來源上發生特定的事件之後,該事件交給事件監聽器負責處理;對於基於回調的事件處理來說,事件來源和事件監聽器是統一的,當事件來源發生特定的事件後,該事件還是由事件本身負責處理。