AndroidカスタムViewのリスニングイベント

1502 ワード

開発の過程で、私たちは常に実際の必要に応じて自分のアプリケーションコンポーネントを描き、自分のリスニングイベントをカスタマイズし、対応する処理方法が必要です.Androidでは、イベントの傍受がコールバックメカニズムに基づいていることを知っています.例えば、よく使われるOnClickイベントなど、その実行メカニズムを知っていますか.もしあなたがすでに理解しているならば、読む必要はありません.もしなければ、この文章はあなたに大きな利益を与えます.
カスタマイズされたViewの構築は、一般的にはViewクラスから継承され、onDraw(canvas)メソッドを実装し、独自のコンポーネントを描画します.しかし、コンポーネントの傍受イベントについてはどうすればいいのでしょうか.リスニングイベントの実装は匿名クラスで実装される.まず何が何なのかを調べてみましょう
匿名クラス:
実装の機能から言えば同じですが、匿名を使うのはもっと簡潔で便利で、形式的にはnewの1つのインタフェースやクラスのような感じがしますが、インタフェースは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(){

                 //          

             }

         });

    }

}