back

グラフィックを描こう! (8/9)

■イメージを表示しよう!

簡単な図形だけでなく、もっと複雑なグラフィックを描こうとすると、やはりイメージの描画が行えるようになりたいでしょう。要するに、あらかじめ表示するグラフィックをイメージファイルとして用意しておき、これを読み込んで表示するわけですね。

では、これもやってみましょう。まずは、表示するイメージファイルを用意してください。ここでは「image1.jpg」というJPEGファイルとして用意することにします。これを、プロジェクトの中に入れます。Androidのプロジェクトでは、リソースファイル関係を「res」というフォルダにまとめてあります。この中の「drawable-xxx」というフォルダ(全部で3つあります)のいずれかにimage1.jpgをコピーしてください。

3つあるフォルダ(drawable-hdpi, drawable-ldpi, drawable-mdpi)は、iconのサイズごとに用意されているものです。どこに入れても、ちゃんとイメージファイルは認識されますので適当に入れておいてください。

続いて、SampleApp.javaの修正です。ImageViewのonDrawを修正し、image1.jpgをロードして描画するようにしてみましょう。

■イメージのロードと描画

イメージの利用は、コンストラクタとonDrawメソッドです。それぞれでやっていることを以下に整理しておきましょう。

※コンストラクタ
1.Resourcesの取得
Resources res = this.getContext().getResources();
まず最初に、「Resources 」というクラスを用意します。これは、プログラムのリソースにアクセスするためのものです。

2.Bitmapの作成
bitmap = BitmapFactory.decodeResource(res, R.drawable.image1);
続いて、イメージのリソースを読み込み、「Bitmap」クラスのインスタンスとして取得します。このBitmapは、文字通りビットマップイメージを扱うためのクラスです。これは、リソースからBitmapオブジェクトを生成するためのBitmapFactory.decodeResourceというメソッドを使って作成します。引数にResourcesと、Rクラスに自動生成されるイメージリソースの値をそれぞれ指定します。これにより、指定されたリソースを読み込んでBitmapが作られます。

※onDrawメソッド
3.drawBitmapで描画する
if (bitmap != null)
    c.drawBitmap(bitmap,0,0,new Paint());
後は、onDrawでイメージを描画するだけです。これはCanvasクラスの「drawBitmap」メソッドを使います。これは引数にBitmap、描く横位置、縦位置、Paintインスタンスをそれぞれ渡して呼び出します。これにより、引数に指定されたBitmapが指定の場所に描かれます。

このdrawBitmapは、この他にもさまざまな引数によるものがオーバーロードされています。とりあえず、この「位置を指定して描画する」ということだけでもわかれば、ずいぶん表現力もアップしますよ。


(by. SYODA-Tuyano.)

※リストが表示されない場合

AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。

package jp.tuyano;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.*;
import android.os.Bundle;
import android.view.View;

public class SampleApp extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DrawView view = new DrawView(getApplication());
        setContentView(view);
    }

    class DrawView extends View {
    	private Bitmap bitmap;

        public DrawView(Context context) {
            super(context);
            Resources res = this.getContext().getResources();
            bitmap = BitmapFactory.decodeResource(res, R.drawable.image1);
        }

        public void onDraw(Canvas c) {
        	if (bitmap != null)
        		c.drawBitmap(bitmap,0,0,new Paint());
        }

    }
}




   

記事のリストに戻る



PC Site G+ mail