search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Android中基於監聽的事件處理

上一期我們學習了Android中的事件處理,也詳細學習了Android中基於監聽的事件處理,同時學會了匿名內部類形式,那麼本期繼續來學習其他四種事件監聽器。

一、使用內部類作為事件監聽器

和上面的匿名內部類不同,使用內部類可以在當前類中復用該監聽器類;因為監聽器類是外部類的內部類,所以可以自由訪問外部類的所有界面組件,這也是內部類的兩個優勢。

接下來通過一個簡單的示常式序來學習Android使用內部類作為事件監聽器。

繼續使用WidgetSample工程,在app/main/res/layout/目錄下創建event_inner_class_layout.xml文件,在其中填充如下代碼片段:

然後在java包下創建EventListenerInnerClassActivity.java文件,載入上面新建的布局文件,使用內部類監聽事件,需要修改一下界面交互代碼,具體代碼如下:

修改AndroidManifest.xml文件中啟動的Activity為EventListenerInnerClassActivity,具體代碼如下:

運行程序,點擊按鈕,可以看到下圖所示界面效果。

二、使用外部類作為事件監聽器

使用外部類定義事件監聽器類的形式比較少見,主要因為如下兩個原因。

  • 事件監聽器通常屬於特定的GUI界面,定義成外部類不利於提高程序的內聚性。

  • 外部類形式的事件監聽器不能自由訪問創建GUI界面的類中的組件,編程不夠簡潔。

但如果某個事件監聽器確實需要被多個GUI界面所共享,而且主要是完成某種業務邏輯的實現,則可以考慮使用外部類形式來定義事件監聽器類。

接下來通過一個簡單的示常式序來學習Android使用外部類作為事件監聽器。

繼續使用WidgetSample工程,在app/main/res/layout/目錄下創建event_outer_class_layout.xml文件,在其中填充如下代碼片段:

然後新建一個監聽器BtnClickListener類,具體代碼如下:

然後在java包下創建EventListenerOuterClassActivity.java文件,載入上面新建的布局文件,使用外部類監聽事件,需要修改一下界面交互代碼,具體代碼如下:

修改啟動的Activity,然後運行程序,點擊按鈕,可以看到下圖所示界面效果。

實際上不推薦將業務邏輯實現寫在事件監聽器中,包含業務邏輯的事件監聽器將導致程序的顯示邏輯和業務邏輯耦合,從而增加程序後期的維護難度。

如果確實有多個事件監聽器需要實現相同的業務邏輯功能,則可以考慮使用業務邏輯組件來定義業務邏輯功能,再讓事件監聽器來調用業務邏輯組件的業務邏輯方法。

三、直接使用Activity作為事件監聽器

這種形式使用Activity本身作為監聽器類,可以直接在Activity類中定義事件處理器方法,這種形式非常簡潔。但是這樣存在兩個問題。

  • 這種形式可能造成程序結構混亂,Activity的主要職責應該是完成界面初始化工作,但此時還需包含事件處理器方法,從而引起混亂。

  • 如果Activity界面類需要實現監聽器介面,讓人感覺比較怪異。

接下來通過一個簡單的示常式序來學習Android直接使用Activity作為事件監聽器。

繼續使用WidgetSample工程,在app/main/res/layout/目錄下創建event_activity_class_layout.xml文件,在其中填充如下代碼片段:

然後在java包下創建EventListenerActivityClassActivity.java文件,載入上面新建的布局文件,為了監聽登錄按鈕的點擊事件,在Java代碼中為其添加點擊事件監聽器,具體代碼如下:

修改啟動的Activity,然後運行程序,點擊按鈕,可以看到下圖所示界面效果。

四、直接綁定到標籤

Android還有一種更簡單的綁定事件監聽器的方式,那就是直接在界面布局文件中為指定標籤綁定事件處理方法。

對於很多Android界面組件標籤而言,它們都支持onClick屬性,該屬性的屬性值就是一個形如xxx(View source)方法的方法名。

接下來通過一個簡單的示常式序來學習Android直接綁定到標籤進行事件處理。

繼續使用WidgetSample工程,在app/main/res/layout/目錄下創建event_xml_label_layout.xml文件,在其中填充如下代碼片段:

上面程序中的粗體字代碼用於在界面布局文件中為Button按鈕綁定一個事件處理方法: clickHandler,這就意味著幵發者需要在該界面布局對應的Activity中定義一個void clickHandler(View source)方法,該方法將會負責處理該按鈕上的單擊事件。

然後在java包下創建EventListenerXmlLabelActivity.java文件,載入上面新建的布局文件,由於在布局文件綁定點擊事件,顧在界面交互代碼裡面定義事件處理方法即可,具體代碼如下:

上面程序中的粗體字代碼定義了一個clickHandler(View source)方法,當程序中的按鈕被單擊時,該方法將會被激發並處理對應按鈕上的單擊事件。

修改啟動的Activity,然後運行程序,點擊按鈕,可以看到下圖所示界面效果。

到此,基於監聽事件的處理5種形式學習完畢,下期繼續學習基於回調的事件處理。

今天就先到這裡,如果有問題歡迎留言一起探討,也歡迎加入Android零基礎入門技術討論微信群,共同成長!

此文章版權為微信公眾號分享達人秀(ShareExpert)——鑫鱻所有,若需轉載請聯繫作者授權,特此聲明!

往期總結分享:

第1節:Android的前世今生

第2節:Android 系統架構和應用組件那些事

第3節:帶你一起來聊一聊Android開發環境

第4節:正確安裝和配置JDK

第5節:善用ADT Bundle

第6節:配置優化SDK Manager

第7節:搞定Android模擬器

第8節:HelloWorld,第一趟旅程出發點

第9節:Android實戰,不懂代碼也可以開發

第10節:開發IDE迎來Android Studio

第11節:運行Android Studio工程

第12節:熟悉Android Studio界面

第13節:Android Studio配置優化

第14節:使用高速Genymotion

第15節:掌握Android Studio項目結構

第16節:Android用戶界面開發概述

第17節:TextView屬性和方法大全

第18節:EditText的屬性和使用方法

第19節:Button使用詳解

第20節:CheckBox和RadioButton使用大全

第21節:ToggleButton和Switch使用大全

第22節:ImageView的屬性和方法大全

第23節:ImageButton和ZoomButton使用

第24節:自定義View簡單使用

第25節:簡單且最常用的LinearLayout

第26節:layout_gravity和gravity大不同

第27節:正確使用padding和margin

第28節:輕鬆掌握RelativeLayout相對布局

第29節:善用TableLayout表格布局

第30節:兩分鐘掌握FrameLayout幀布局

第31節:少用的AbsoluteLayout絕對布局

第32節:新推出的GridLayout網格布局

第33節: Android事件處理概述



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦