Androidアプリ開発入門のFAQとおすすめアンドロイドアプリ・ゲーム紹介サイトです。

カスタムViewの実装の仕方

2011年9月26日(月) 3:43 PM

カスタムビューを使って、画面の真ん中に円を描くサンプルをつくってみました。

ボタンやテキストビューなど初めから用意されているViewだけでなく、自分自身でカスタムしたオリジナルViewを実装することができます。カスタムビューはゲームや複雑なアプリをつくるときに使われます。

Sample Image

◆実装の仕方◆
①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)は、新しいプロジェクトをつくった時のままです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

コメントの更新情報

トラックバックURL

http://www.appli-info.jp/archives/894/trackback

* RSS FEED

広告