Android 自定義View的監聽事件

在開發過程中,我們常常根據實際的需要繪製自己的應用組件,那麼定製自己的監聽事件,及相應的處理方法是必要的。我們都知道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(){

                 //實現單擊事件處理接口

             }

         });

    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章