イメージの利用
ある程度複雑な描画ができるようになると、やはり「イメージ」を利用した表示が必要となります。すべて図形を描いて作るより、あらかじめ用意しておいたイメージファイルを読み込んで表示したほうが、はるかにきれいな画面が作れますね。
イメージの描画には、ImageとMediaManagerという2つのクラスが必要となります。MediaManagerは、文字通りメディアを管理するためのもので、これが必要なリソースからデータを読み込みメディアデータをセットアップします。そしてそこからイメージのオブジェクトであるImageインスタンスを取り出し、実際に描画に利用することになります。
では、これも簡単なサンプルを作成しましょう。まず、表示するイメージファイルを作成しましょう。今回は「img.gif」というファイル名のGIFファイルとして作成をします。そして、Eclipseのプロジェクト内にある「res」というフォルダにドラッグ&ドロップしてファイルを入れてください。iアプリのプロジェクトでは、使用するファイル類はこの「res」フォルダに収めておきます。ここに置かれたファイルは、ビルドした際に一緒にJarファイルにまとめられます。
では、このimg.gifを使用した簡単なサンプルをあげておきます。ここでは、これを読み込んで画面に表示するだけのシンプルなサンプルです。
import com.nttdocomo.io.ConnectionException;
import com.nttdocomo.ui.*;
public class SampleIApp extends IApplication {
public void start() {
Display.setCurrent(new MainCanvas(this));
}
}
class MainCanvas extends Canvas {
IApplication iapp;
Image img;
MainCanvas(IApplication app){
super();
try {
MediaImage mi =MediaManager.getImage("resource:///img.gif");
mi.use();
img = mi.getImage();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (UIException e) {
e.printStackTrace();
} catch (ConnectionException e) {
e.printStackTrace();
}
this.setSoftLabel(Frame.SOFT_KEY_2, "QUIT");
}
public void paint(Graphics g) {
g.lock();
g.drawImage(img,10, 10);
g.unlock(true);
}
public void processEvent(int type, int param) {
super.processEvent(type, param);
switch(type){
case Display.KEY_PRESSED_EVENT:
switch(param){
case Display.KEY_SOFT2:
iapp.terminate();
}
}
}
}