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(){

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

             }

         });

    }

}

紅色標記的部分都是重點,希望多多理解。這只是一個簡單的例子,其它的還應該多多理解學習。

轉載http://blog.sina.com.cn/s/blog_8a86f4dd0101aidk.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM