アプリケーション開発
タッチイベントの説明ではタッチした座標をテキストで表示しました。 ここではタッチしたところに円を描画してみましょう。
ここでは、先ほど作成した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の正方形になりますので楕円ではなく円になります。