一.基于監聽的事件處理
在事件監聽的處理模型中,主要涉及如下三類對象:
Event Source(事件源):事件發生的場所,通常是各個組件。
Event(事件):事件封裝了界面組件上發生的特定的事情。
Event Listener(事件監聽器):負責監聽事件源所發出的事件,并對各事件做出相應的響應。
基于監聽的事件處理模型編程步驟如下:
1.獲取普通界面組件(事件源),也就是被監聽的對象。
2.實現事件監聽器類,該監聽器是一個java類,必須實現一個XxxListener接口。
3.調用事件源的setXxxListener方法將事件監聽器對象注冊給普通組件(事件源)。
在程序中實現事件監聽,通常有以下幾種方式:
1.內部類形式:將事件監聽器類定義成當前的內部類。
2.外部類形式:將事件監聽器類定義成一個外部類
3.Activity本身作為事件監聽器類:讓Activity本身實現監聽接口,并實現事件處理方法。
4.匿名內部類:使用匿名內部類創建事件監聽對象
5.直接綁定到標簽:直接在界面布局文件中為指定標簽綁定事件處理方法。
Android的事件處理機制是一種委派式事件處理方式
二.基于回調的實踐處理
對于基于回調的事件處理模型來說,事件源與事件監聽器是統一的,或者說事件監聽器完全消失了。當用戶在GUI組件上激發某個事件時,組件自己特定的方法將會負責處理該事件。
View包含的事件處理的回調方法:
Boolean onKeyDown(int keyCode, KeyEvent event):當用戶在該組件上按下某個鍵是觸發。
Boolean onKeyLongPress(int keyCode, KeyEvent event):當用戶在該組件上長按某個鍵時觸發。
Boolean onKeyUp(int keyCode, KeyEvent event):當用戶在該組件上松開某個鍵時觸發。
Boolean onTouchEvent(MotionEvent event):當用戶在該組件上觸發觸摸屏幕事件時觸發。
Boolean onTrackballEvent(MotionEvent event):當用戶在該組件上觸發軌跡球屏事件時觸發。
基于回調的事件傳播:
如果處理事件的回調方法返回true,表明該處理方法已完全處理該事件,該事件不會傳播出去。
如果處理事件的回調方法返回false,表明該處理方法并未完全處理該事件,該事件會傳播出去。
基于回調的實踐處理機制可通過自定義View來實現,自定義View時重寫該View的事件處理方法即可。