Android事件監聽器的實現方式

第一種:匿名內部類做爲事件監聽器類
1.gif


大部分時候,事件處理器都沒有什麼利用價值(可利用代碼一般都被抽象成了業務邏輯方法),所以大部分事件監聽器只是臨時使用一次,因此使用匿名內部類形式的事件監聽器更合適,實際上,這種形式是目前是最普遍的事件監聽器形式。上面的程序代碼就是匿名內部類來建立事件監聽器的!!!
對於使用匿名內部類做爲監聽器的形式來講,惟一的缺點就是匿名內部類的語法有點不易掌握,若是讀者java基礎紮實,匿名內部類的語法掌握較好,一般建議使用匿名內部類做爲監聽器。
第二種:內部類做爲監聽器
2.gif

將事件監聽器類定義成當前類的內部類。一、使用內部類能夠在當前類中複用監聽器類,由於監聽器類是外部類的內部類,二、因此能夠自由訪問外部類的全部界面組件。這也是內部類的兩個優點。上面代碼就是內部類的形式!!
第三種:Activity自己做爲事件監聽器
3.gif
這種形式使用activity自己做爲監聽器類,能夠直接在activity類中定義事件處理器方法,這種形式很是簡潔。但這種作法有兩個缺點:(1)這種形式可能形成程序結構混亂。Activity的主要職責應該是完成界面初始化;但此時還需包含事件處理器方法,從而引發混亂。(2)若是activity界面類須要實現監聽器接口,讓人感受比較怪異。
上面的程序讓Activity類實現了OnClickListener事件監聽接口,從而能夠在該Activity類中直接定義事件處理器方法:onClick(view v),當爲某個組件添加該事件監聽器對象時,直接使用this做爲事件監聽器對象便可。

第四種:外部類做爲監聽器
ButtonTest類
4.gif

當用戶單擊button按鈕時,程序將會觸發MyButtonListener監聽器
外部MyButtonListener類
5.gif

使用頂級類定義事件監聽器類的形式比較少見,主要由於以下兩個緣由:
一、事件監聽器一般屬於特定的gui界面,定義成外部類不利於提升程序的內聚性。
二、外部類形式的事件監聽器不能自由訪問建立gui界面的類中的組件,編程不夠簡潔。
但若是某個事件監聽器確實須要被多個gui界面所共享,並且主要是完成某種業務邏輯的實現,則能夠考慮使用外部類的形式來定義事件監聽器類。
第五種:直接綁定到標籤
Android還有一種更簡單的綁定事件監聽器的的方式,直接在界面佈局文件中爲指定標籤綁定事件處理方法。
對於不少Android標籤而言,它們都支持如onClick、onLongClick等屬性,這種屬性的屬性值就是一個形如xxx
(View source)
的方法的方法名。在佈局文件中爲button添加屬性,如一代碼:
6.gif

爲Button按鈕綁定一個事件處理方法:clickHanlder,這意味着開發者須要在該界面佈局對應的Activity中定義一個void clickHanler(View source)方法,該方法將會負責處理該按鈕上的單擊事件。
下面是該界面佈局對應的java代碼:
7.gif
相關文章
相關標籤/搜索