カスタムビューを使って、画面の真ん中に円を描くサンプルをつくってみました。
ボタンやテキストビューなど初めから用意されているViewだけでなく、自分自身でカスタムしたオリジナルViewを実装することができます。カスタムビューはゲームや複雑なアプリをつくるときに使われます。
◆実装の仕方◆
①Viewを継承したCustomViewクラスのための新しいファイル「CustomView.java」を作成する。
「CustomView.java」のソースコード
package com.appliinfo.android.samplethree; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class CustomView extends View { private Context mContext; private Paint mCirclePaint = new Paint(); //コンストラクタ public CustomView(Context context) { super(context); mContext = context; } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); //画面のサイズを取得 int width = getWidth(); int height = getHeight(); //ペイントの色とスタイルをセット(色:青色 スタイル:図形の中を塗りつぶす) mCirclePaint.setARGB(255, 153, 204, 255); mCirclePaint.setStyle(Paint.Style.FILL); //画面の中心に円を描く canvas.drawCircle(width / 2, height / 2, 25, mCirclePaint); } }
②res/layout/main.xmlにカスタムViewをセットする。
res/layout/main.xmlのソースコード
<?xml version=”1.0″ encoding=”utf-8″?>
<com.appliinfo.android.samplethree.CustomView xmlns:android=”http://schemas.android.com/apk/res/android“
android:id=”@+id/customview”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#FF000000″>
</com.appliinfo.android.samplethree.CustomView>
③LayoutInflaterを使ってmain.xmlからViewを生成し、setContentView()でセットする。
LayoutInflaterを使うと、動的にレイアウトxmlからViewを生成することができるので、プログラム実行中にレイアウトを切り替えることもできるそうです。
「SampleThree.java」のソースコード
package com.appliinfo.android.samplethree; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; public class SampleThree extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater factory = LayoutInflater.from(this); // Set game layout View view = factory.inflate(R.layout.main, null); setContentView(view); } }
残りの設定(AndroidManifest.xml)は、新しいプロジェクトをつくった時のままです。
コメント