独自のビューを作るには、Viewクラスを継承する。
このとき、Viewクラスにある3種のコンストラクタのうち、必要に応じてどれか一つは実装しなければならない。
- public View(Context context)
コードからビューを作るための単純なコンストラクタである。 - public View(Context context, AttributeSet attrs)
xmlレイアウトファイルに記述してViewを作るためのコンストラクタである。
xmlに記述したアトリビュートをattrsから取得できる。 - public View(Context context,AttributeSet attrs, int defStyle)
xmlレイアウトファイルに記述してViewを作るためのコンストラクタである。
APIドキュメントによれば、2.のコンストラクタに加え、デフォルトのスタイルを指定することができる・・・とのことである。
自分でビューを作る場合は特に使いどころは無いと思う。この3つめのコンストラクタの使いどころは、正直今は良く分からない。
次に、独自ビューのサンプルコードを示す。
package com.lesson.originalview; // インポートは省略 class MyView extends View{ public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } // 必要に応じてonDraw()やonTouchEvent()などのメソッドをオーバーライドする }
Activityに直接を追加するには、以下のようにする。
setContentView(new MyView());
レイアウトxmlで定義する場合は以下のようにする。
<com.lesson.originalview.MyView android:id="@+id/myView" android:layout_width="wrap_content" android:layout_height="fill_parent" />