初心者用Android入門
TOP 1.はじめに 2.開発環境の構築 3.ライフサイクル 4.アプリケーション 5.GoogleMapアプリ

図形の描画

 タッチイベントの説明ではタッチした座標をテキストで表示しました。 ここではタッチしたところに円を描画してみましょう。

 ここでは、先ほど作成したTouchViewプロジェクトの TouchViewクラスを修正しています。

package com.first_android.android.touchevent;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

public class TouchView extends View {

	private float xZahyou = 0;
	private float yZahyou = 0;

	public TouchView(Context context) {
		super(context);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {

		xZahyou = event.getX();
		yZahyou = event.getY();

	 	this.invalidate();

		return true;
	}

	@Override
	protected void onDraw(Canvas canvas) {

		Paint p = new Paint();
		p.setAntiAlias(true);
		p.setColor(Color.WHITE);

		// 半径10の円を描画する
		canvas.drawCircle(xZahyou, yZahyou, 10, p);
	}
}

 ViewクラスのonDrawメソッドをオーバーライドして、描画処理を行います。 CanvasクラスのdrawCircleメソッドを利用することで円を描画することができます。 ここで利用しているdrawCircleメソッドの 第1引数は描画する円の中心のX座標、第2引数は描画する円の中心のY座標、 第3引数は円の半径、 第4引数は色やサイズなどのスタイルを指定したPain情報を表します。

public void drawCircle(float cx, float cy, float radius, Paint paint)

 ここでは、drawCircleの引数に、タッチしたX座標とY座標、半径10を指定しています。 これにより、タッチした個所を中心に半径10の円が描画されます。

 TouchEventクラスに修正は行いません。

package com.first_android.android.touchevent;

import android.app.Activity;
import android.os.Bundle;

public class TouchEvent extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        TouchView touchView = new TouchView(this);
        setContentView(touchView);
    }
}

 Androidアプリケーションとして実行すると次のように表示されます。 画面をタッチするとタッチした個所に円が描画されます。

 描画できる図形は円の他にもいろいろあります。 ここでは点や直性、矩形、楕円などの描画について説明します。

点の描画

public void drawPoint(float x, float y, Paint paint)

引数に指定したX座標(x)とY座標(y)に点を描画する。

直線の描画

public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

引数に指定した開始点の座標(startX, startY)から終点の座標(stopX, stopY)まで直線を描画する。

矩形の描画

public void drawRect(float left, float top, float right, float bottom, Paint paint)

引数に指定した矩形(長方形)の左上の頂点座標(left, top)と右下の頂点座標(right, bottom)の矩形を描画する。

楕円の描画

public void drawOval(RectF oval, Paint paint)

引数に指定したRectFクラスのインスタンスの矩形情報から楕円を作成して描画します。 RectFクラスのインスタンスは「new RectF(0, 0, 100, 100)」のように指定して生成します。 この場合は底辺高さともに100の正方形になりますので楕円ではなく円になります。

[戻る]  [TOP]  [次へ]


This website is link free.
All graphics and page design, Copyright © 初心者用Android入門

Portions of this page are modifications based on work created and shared by Google and
used according to terms described in the Creative Commons 3.0 Attribution License.