2012年2月4日土曜日

(Canvas)円周を描画する

android.graphics.* android.animation.* のあたりにも手を出してみたい、とようやく考え始め。
まずはシンプルに円を描くコードを作成。

下記のコードは、青色の線で円を描きます。


import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

public class CanvasSampleActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((LinearLayout) findViewById(R.id.container)).addView(new MyView(this));
}

public class MyView extends View {

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

@Override
public void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(0xff0000ff);
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(200f, 200f, 100f, paint);
}

}

}

なお、R.layout.mainは以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/container"
    android:background="#ffffffff">
</LinearLayout>

android:id="@+id/container"を定義している以外は、特に何もしていません。


基本的なポイントとしては、
・Viewを継承したクラスを作成し、その中でonDrawメソッドをオーバーライドして描画プログラムを書く。
・onDrawメソッドは最初の描画時や、invalidate()が呼び出された時などに自動的に呼び出される。
・Paintオブジェクトには色やエフェクト等書式的な情報がセットできる。
・Canvasオブジェクトが「丸を書く」「四角を書く」「線を書く」などの描画メソッドを持っている。描画メソッドは基本的にPaintオブジェクトを引数に取るようになっている。

また、Paint.StyleプロパティはデフォルトではFILLになっており、円や四角を描いた場合、中身はすべて塗りつぶされます。STROKEに変更すると周のみを描くことができます。



0 件のコメント:

コメントを投稿