Android事件處理機制

一.基于監(jiān)聽的事件處理


在事件監(jiān)聽的處理模型中,主要涉及如下三類對象:

Event Source(事件源):事件發(fā)生的場所,通常是各個組件。

Event(事件):事件封裝了界面組件上發(fā)生的特定的事情。

Event Listener(事件監(jiān)聽器):負責監(jiān)聽事件源所發(fā)出的事件,并對各事件做出相應的響應。

基于監(jiān)聽的事件處理模型編程步驟如下:

1.獲取普通界面組件(事件源),也就是被監(jiān)聽的對象。

2.實現(xiàn)事件監(jiān)聽器類,該監(jiān)聽器是一個java類,必須實現(xiàn)一個XxxListener接口。

3.調(diào)用事件源的setXxxListener方法將事件監(jiān)聽器對象注冊給普通組件(事件源)。

在程序中實現(xiàn)事件監(jiān)聽,通常有以下幾種方式:

1.內(nèi)部類形式:將事件監(jiān)聽器類定義成當前的內(nèi)部類。

2.外部類形式:將事件監(jiān)聽器類定義成一個外部類

3.Activity本身作為事件監(jiān)聽器類:讓Activity本身實現(xiàn)監(jiān)聽接口,并實現(xiàn)事件處理方法。

4.匿名內(nèi)部類:使用匿名內(nèi)部類創(chuàng)建事件監(jiān)聽對象

5.直接綁定到標簽:直接在界面布局文件中為指定標簽綁定事件處理方法。

Android的事件處理機制是一種委派式事件處理方式

二.基于回調(diào)的實踐處理


對于基于回調(diào)的事件處理模型來說,事件源與事件監(jiān)聽器是統(tǒng)一的,或者說事件監(jiān)聽器完全消失了。當用戶在GUI組件上激發(fā)某個事件時,組件自己特定的方法將會負責處理該事件。

View包含的事件處理的回調(diào)方法:

Boolean onKeyDown(int keyCode, KeyEvent event):當用戶在該組件上按下某個鍵是觸發(fā)。

Boolean onKeyLongPress(int keyCode, KeyEvent event):當用戶在該組件上長按某個鍵時觸發(fā)。

Boolean onKeyUp(int keyCode, KeyEvent event):當用戶在該組件上松開某個鍵時觸發(fā)。

Boolean onTouchEvent(MotionEvent event):當用戶在該組件上觸發(fā)觸摸屏幕事件時觸發(fā)。

Boolean onTrackballEvent(MotionEvent event):當用戶在該組件上觸發(fā)軌跡球屏事件時觸發(fā)。

基于回調(diào)的事件傳播:

如果處理事件的回調(diào)方法返回true,表明該處理方法已完全處理該事件,該事件不會傳播出去。

如果處理事件的回調(diào)方法返回false,表明該處理方法并未完全處理該事件,該事件會傳播出去。


基于回調(diào)的實踐處理機制可通過自定義View來實現(xiàn),自定義View時重寫該View的事件處理方法即可。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容