Android 開發事件響應之基於監聽的事件響應
本文將介紹Android 操作系統如何通過監聽來實現對事件的響應。
Android 開發事件響應之基於監聽的事件響應 背景介紹 Android 開發事件響應類型 內部類 匿名內部類 外部類 直接綁定標簽 總結
背景介紹
對於任何可視化開發來說,都會涉及到對控件的響應。我們通過舉例:實現對Button 按鈕的點擊來講解Android 裡面對事件相應的辦法。
Android 開發事件響應類型
在Android 開發中,有兩種方式可以對事件作出響應,分別是:
– 基於監聽的事件處理
– 基於回調的事件處理
在本文,我們重點分析基於基於監聽的事件處理,主要有五種實現方式:
– 內部類
– 內部匿名類
– 外部類
– 直接綁定標簽
– Activity 本身作為事件監聽標簽
我個人對第五種方式無感,所以在這裡我不做詳細的介紹瞭。
內部類
內部類是我們最為常用的方法,首先需要使用setOnClickListener 來綁定處理響應消息的類:
// 內部類
button2.setOnClickListener(new MyOnClickListener());
然後在你設計的Activity中,建立一個內部類:
public class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View v){
Toast.makeText(getApplicationContext(), "內部類", Toast.LENGTH_SHORT).show();
}
}
個人認為內部類是首推的方法,因為你可以設計一個內部類,接受所有button 響應的消息。
匿名內部類
下面是一個匿名內部類的例子:
// 內部匿名類
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "內部匿名類", Toast.LENGTH_SHORT).show();
}
});
外部類
外部類,通俗來說就是新建立一個.java文件來編寫對Button 點擊事件的響應,下面是一個例子,OuterClass 是我編寫的需要響應Button 事件的類:
import android.app.Activity;
import android.view.View;
import android.widget.Toast;
/**
* Created by zhi on 2015/4/24.
*/
public class OuterClass implements View.OnClickListener{
private Activity act;
OuterClass(Activity activity){
act = activity;
}
@Override
public void onClick(View v){
Toast.makeText(act,"外部類", Toast.LENGTH_SHORT).show();
}
}
因為Toast 需要一個Activity 參數,所以構建這個類的時候需要設置這個變量。
並且在調用時,將參數傳遞過去:
// 外部類
button3.setOnClickListener(new OuterClass(this));
直接綁定標簽
直接綁定標簽,是指在xml 文件中,做設置,如下面的例子:
在佈局文件中,有onClick標簽,制定該button 綁定的函數。
提示: 這裡“clickButton” 是要處理消息的函數名,不需要加括號
在.java 文件中,編寫clickButton 方法:
// 直接綁定
public void clickButton(View source){
Toast.makeText(getApplicationContext(),"綁定標簽", Toast.LENGTH_SHORT).show();
}
提示:這裡需要註意,函數的名字可以隨意命名,但是參數一定要符合(View source) 這種形式,不然程序會直接崩潰。
總結
本文主要是介紹Android 操作系統如何去響應事件,本文主要講解的是通過監聽的方式。