Android開發學習 事件監聽方式

2021-08-01 09:56:43 字數 2092 閱讀 9322

五大監聽方式:匿名內部類 內部類 外部類 介面類 繫結標籤

匿名內部類

bt1.setonclicklistener(new view.onclicklistener() 

});

大部分時候,事件處理器都沒有什麼利用價值(可利用**通常都被抽象成了業務邏輯方法),因此大部分事件器更合適,實際上,這種形式是目前是最廣泛的事件***形式。上面的程式**就是匿名內部類來建立事件監對於使用匿名內部類作為***的形式來說,唯一的缺點就是匿名內部類的語法有點不易掌握

內部類

public

class

secondactivity

extends

activity

//內部類

class

myclick

implements

view.onclicklistener

}}

將事件***類定義成當前類的內部類。1、使用內部類可以在當前類中復用***類,因為***類是外部類內部類的兩個優勢。上面**就是內部類的形式!

外部類

//activity類中

bt2.setonclicklistener(new iclick());

//iclick類中

import android.util.log;

import android.view.view;

public

class

iclick

implements

view.onclicklistener

}

使用外部類定義事件***類的形式比較少見,主要因為如下兩個原因: 1、事件***通常屬於特定的gui介面,定義成外部類不籃球提高程式的內聚性。 2、外部類形式的事件***不能自由訪問建立gui介面的類中的元件,程式設計不夠簡潔。 但如果某個事件***確實需要被多個gui介面所共享,而且主要是完成某種業務邏輯的實現,則可以考慮使用

介面類

public

class

threeactivity

extends

activity

implements

view.onclicklistener

@override

public

void

onclick(view arg0)

}

可以直接在activity中定義事件處理方法

其中優點為:非常簡潔

缺點為:

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

2.如果activity介面類需要實現***介面,讓人感覺比較怪異

繫結標籤

//在xml檔案中

"@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignleft="@+id/button1"

android:layout_below="@+id/button1"

android:layout_margintop="39dp"

android:text="button"

android:onclick="clickhandle" />

//在活動活動中新增乙個clickhandle函式

private

static final string tag = "begin"

public

void

clickhandle(view source)

為button按鈕繫結乙個事件處理方法:clickhanlder,這意味著開發者需要在該介面布局對應的activity中定處理該按鈕上的單擊事件

Android監聽USB插拔事件

android監聽usb插拔事件有兩種方式 一種是在mainifest.xml中註冊 android.hardware.usb.action.usb device attached即在usb插入是的action意圖。在android.hardware.usb.usbmanager類中有多種actio...

Android 監聽螢幕解鎖事件

在做乙個程式的時候,需要時刻保持某一服務是啟動的,因此想到了通過監聽螢幕screen on和screen off這兩個action。奇怪的是,這兩個action只能通過 的形式註冊,才能被監聽到,使用androidmanifest.xml 完全監聽不到。查了一下,發現這是powermanager那邊...

安卓開發 button事件監聽

事件監聽的listener,有以下幾種方式 1 宣告乙個普通的class,實現onclicklistener介面,然後在button的setonclicklistener中new該類的乙個物件。2 使用匿名內部類,直接 btn.setonclicklistener new onclicklisten...