Androidアプリ作成講座 7-キャンバス上で描画する
それではSurfaceView上に描画を行います。描画はSurfaceにあるキャンバスの上に書き込みます。キャンバスの考え方は、昔からデバイスやOS、言語でありました。最近ではHTML5にもキャンバスがありますね。この上で図形を描画することになります。
今回の講座では円を描画するのですが、とりあえず文字の表示を行います。
1.SurfaceViewソース
package kunimiyasoft.circletest; import android.content.Context; import android.view.SurfaceView; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Color; import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder; public MySurfaceView(Context context) { super(context); holder = getHolder(); holder.addCallback(this); } // 変化があった時 @Override public void surfaceChanged(SurfaceHolder holder, int f, int w, int h) { myDraw() ; } // 作成された時 @Override public void surfaceCreated(SurfaceHolder holder) { } // 破棄される時 @Override public void surfaceDestroyed(SurfaceHolder holder) { } public void myDraw() { Canvas canvas = holder.lockCanvas(); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setTextSize(50); canvas.drawText("My Draw !!", 100, 100, paint); holder.unlockCanvasAndPost(canvas); } }
2.ライブラリの追加
キャンバスやブラシ、色などを使うためにライブラリを設定します。
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Color;
3.描画用関数(myDraw)の作成
今回は、描画関数を作って、それをSurfaceChangedで呼び出す仕様にします。onDraw関数をオーバーライドする方が簡単なようですが、今後の処理を考えて今回の仕様にしました。
キャンバスを取得する
Canvas canvas = holder.lockCanvas();
キャンバスを取得します。同時にロックして、他でキャンバスを使わせないようにします。
ブラシをセットする
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(50);
ペイントクラスで、ブラシの定義をします。ペイントクラスのインスタンスを作り、ブラシの色を黒にして、テキストの高さを50にしています。
デバイスによって解像度は大きく違うため、文字の大きさも大きく変わります。本来は調整が必要ですが、ここでは固定値を使います。必要に応じて、50の値を変えてみてください。
文字を表示する
canvas.drawText(“My Draw !!", 100, 100, paint);
X軸とY軸のそれぞれが100の位置に、文字列「My Draw !!」を表示します。
キャンバスを解放する
holder.unlockCanvasAndPost(canvas);
キャンバスを占有して使用したので、開放します。
4.実行してみる
このように、画面が表示されればOKです。
5.キャンバスに図形をいろいろ描画すればOK
これで文字の描画ができました。今回は文字を表示しましたが、次の投稿で円を描画しますし、ビットマップを表示しても良いでしょう。キャンバスの上に描画することによって、Androidの画面上に自由にグラフィックを表示することができます。
次の投稿では、円を描いていきます。
(LIST)Androidアプリ作成講座
Androidアプリ作成講座 プロローグ
Androidアプリ作成講座 1-プロジェクトを作る
Androidアプリ作成講座 2-プロジェクトを確認する
Androidアプリ作成講座 3-エミュレーター環境を作る
Androidアプリ作成講座 4-SurfaceViewクラスを作成する
Androidアプリ作成講座 5-SurfaceViewをActivityにセットする
Androidアプリ作成講座 6-SurfaceViewがイベントを受け取れるようにする
Androidアプリ作成講座 7-キャンバス上で描画する
Androidアプリ作成講座 8-円を描画する
Androidアプリ作成講座 9-デバッガを使ってみよう
Androidアプリ作成講座 10-Animationクラスを使う
Androidアプリ作成講座 11-円移動のソース