Android基本功:事件處理

來源:互聯網
上載者:User

一、事件概述

當使用者在程式介面上執行各種操作時,應用程式必須為使用者動作提供響應動作,這種響應動作需要通過事件處理來完成。Andorid提供了強大的事件處理機制,包括兩套事件處理機制:

基於監聽的事件處理:為Android介面組件綁定特定的事件監聽器;

基於回調的事件處理:重寫Android組件特定的回調方法,或者重寫Activity的回調方法;

注意:Android還允許在介面布局檔案中為UI組件的android:onClick屬性指定事件的監聽方法,開發人員需要在Activity定義該事件監聽方法,有一個View型別參數,代表單擊的組件;

二、基於監聽的事件處理

在事件監聽處理模型中,主要涉及如下三類對象:

Event Sources(事件來源):事件發生的場所,指各個組件;

Event(事件):封裝了介面組件上發生的特定事件,一般通過Event對象來取得;

Event Listener(事件監聽器):監聽事件來源發生的事件,並對各個事件做出相應的響應;

基於事件監聽的事件處理模型編程步步驟如下:

擷取普通介面組件(事件來源),也就是被監聽的對象;

實現事件監聽器類,該監聽器類是一個特殊的Java類,必須事件一個XxxListener介面;

呼叫事件源的setXxxListener方法將事件監聽器對象註冊給普通組件(事件來源);

在程式中實現事件監聽器,通常有如下方式:

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

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

通常屬於特定的GUI介面,不利於提高程式的內聚性;

不能自由訪問建立GUI介面的類中的組件,編程不夠簡潔;

Activity本身作為事件監聽類:讓Activity本身實現監聽器介面,並實現事件處理方法;

Activity的主要職能應該是完成介面的初始化工作,造成程式結構混亂;

Activity實現監聽器介面,感覺怪異;

匿名內部類:使用匿名內部類建立事件監聽器對象;

大部分事件監聽知識臨時使用一次,所以使用匿名內部類更合適;

直接綁定到標籤:android:onClick屬性和xxx(View source)的方法;

三、基於回調的事件處理

對於基於回調的事件處理模型來說,事件來源和事件監聽器是統一的。為了實現回調機制地事件處理,Android為所有的GUI組件提供了一些事件處理方法,以View為例:

boolean onKeyDown(int keyCode,KeyEvent event):在該組件上按下某個鍵時觸發的方法;

boolean onKeyLongPress(int keyCode,KeyEvent event):在該組件上長按某個鍵時觸發的方法;

boolean onTouchEvent(MotionEvent event):在該組件上觸控螢幕事件時觸發的方法;

幾乎所有基於回調的事件處理方法都有一個boolean類型的返回值,該返回值使用者標識該處理方法是否能完全處理該事件:

返回true,已完全處理,不會傳播下去;

返回false,未完全處理,會傳播下去;

Android系統最先觸發的應該是該按鍵上綁定的事件監聽器(Listener),接著才觸發該組件提供的事件回調方法(MyButton),然後還會傳播到該組件所在的Activity(Activity)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.