在開發過程中,我們常常根據實際的需要繪製自己的應用組件,那麼定製自己的監聽事件,及相應的處理方法是必要的。我們都知道Android中,事件的監聽是基於回調機制的,比如常用的OnClick事件,你瞭解它的運行機制嗎?如果你已經瞭解了,那麼就不必看了,如果沒有,這篇文章會給你給你很大的益處。
自定義的View組建,一般的情況是繼承自View類,實現其中的onDraw(canvas)方法,然後在其中繪製自己的組件。但是對於組件的監聽事件該怎麼辦呢?監聽事件的實現是用匿名類實現。下面先了解一下什麼是
匿名類:
從實現的功能來講是一樣的,但是使用匿名更加簡潔方便,形式上有點像new一個接口或類的感覺,但是我們必須記住接口是不可以new出來的(實例化),我們要在內部重寫需要的接口的方法,這樣就new出了一個實現接口方法的對象,但是這個對象的類名不可見,所以叫做匿名類。
下面看看這個代碼:
//實現自己的View
public MyView extends View{
OnCLickListener listener=null; //監聽器類對象
//監聽器類接口
public static abstract interface OnClickListener{
public abstract void onClick(); //單擊事件處理接口
}
public MyView(Context context){
}
public void onDraw(Canvas canvas){
}
//實現這個View的監聽器
public void setOnClickListener(OnClickListener listener){
this.listener = listener; //引用監聽器類對象,在這裏可以使用監聽器類的對象
}
}
//下面是測試類
public class MyActivity extends Activity{
public void onCreate(Bundle b){
super.onCreate(b);
MyView mv = new MyView(this); //實例化View對象
mv.setOnClickListener(new MyView.OnClickListener(){
public void onClick(){
//實現單擊事件處理接口
}
});
}
}