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