グラフィックを描こう! (8/9)
作成:2010-06-16 14:53
更新:2010-06-16 14:54
更新:2010-06-16 14:54
■イメージを表示しよう!
簡単な図形だけでなく、もっと複雑なグラフィックを描こうとすると、やはりイメージの描画が行えるようになりたいでしょう。要するに、あらかじめ表示するグラフィックをイメージファイルとして用意しておき、これを読み込んで表示するわけですね。
では、これもやってみましょう。まずは、表示するイメージファイルを用意してください。ここでは「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の取得
2.Bitmapの作成
※onDrawメソッド
3.drawBitmapで描画する
このdrawBitmapは、この他にもさまざまな引数によるものがオーバーロードされています。とりあえず、この「位置を指定して描画する」ということだけでもわかれば、ずいぶん表現力もアップしますよ。
では、これもやってみましょう。まずは、表示するイメージファイルを用意してください。ここでは「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)後は、onDrawでイメージを描画するだけです。これはCanvasクラスの「drawBitmap」メソッドを使います。これは引数にBitmap、描く横位置、縦位置、Paintインスタンスをそれぞれ渡して呼び出します。これにより、引数に指定されたBitmapが指定の場所に描かれます。
c.drawBitmap(bitmap,0,0,new Paint());
この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()); } } }
※関連コンテンツ