iアプリライブラリ カスタムパネル
ドコモのi-mode携帯電話で動作するiアプリをビジネスに変える!
そんなビジュアル性の高いコンポーネントをライブラリという形で無償提供しています。
本ライブラリを用いると、Panelで使えるようなコンポーネント(ラベル、テキストボックス、リストなど)を、Canvas上で作成する事ができるようになります。
【実行画面】
カスタムパネルの概要(パンフレット) : CostumePanel.pdf(15181) (PDF形式)
【ダウンロード】
内容 | Final Release |
---|---|
バイナリ(Jar) | CPanel.jar(14200) 16 Kbyte |
APIリファレンス(JavaDoc) | CPanel_doc.zip(13761) 115 Kbyte |
ソース(Source) | CPanel_src.zip(13785) 30(Kbyte) |
- ライセンス
- 本製品はオープンソースであり、ライセンスはCPLです。本製品を別のiアプリライブラリとして使用するのではなく、別の製品(iアプリ)に使用・販売・インポートする場合において、(CPLのコントリビューションに該当しないため)本製品に変更または追加を加えたとしても、オープンソースにする必要もなく、オブジェクトコードを独自のライセンスで頒布できます。
ライブラリの使い方
使い方は、とても簡単で、
1. 本ライブラリ(CPanel.jar)を以下の場所に置きます。
C:\iDKDoJa5.1\lib\component
2. iアプリエミュレータを起動して、[プロジェクト]-[iアプリライブラリ] から 本ライブラリにチェックを付けます。
以上で本ライブラリが利用できるようになります。
Sample
/* * CostumePanel Sample.java */ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import iappli.lib.graphics.*; import iappli.lib.io.*; import iappli.lib.ui.*; import com.nttdocomo.ui.IApplication; import com.nttdocomo.ui.Canvas; import com.nttdocomo.ui.Display; import com.nttdocomo.ui.Graphics; import com.nttdocomo.ui.Image; import com.nttdocomo.ui.MediaImage; import com.nttdocomo.ui.MediaManager; /** * サンプル実装です */ public class Sample extends IApplication { public void start() { Image im = null; // 背景画像の取得 try { // スクラッチパッドまたはサーバからダウンロードする場合 // ・ADFのPackageURLにダウンロード元サイトのURLを指定のこと // ("http://localhost/" は Apache等 で自マシンからダウンロードする場合。) // ・ADFのUseNetworkをhttpに設定のこと // ・ADFのSPSizeに画像の保存に必要な領域を指定のこと byte data[] = SPControl.mediaRead(0, 0, 0, this.getSourceURL()+"image.gif"); MediaImage mi = MediaManager.getImage(data); // プロジェクト/res 配下から取得する場合 (注:jarサイズが大きくなる) // ・プロジェクト/res 配下に画像ファイルを置くこと // MediaImage mi = MediaManager.getImage("resource:///image.gif"); mi.use(); im = mi.getImage(); } catch (Exception e) { // 画像が存在しない im = null; e.printStackTrace(); } Display.setCurrent(new SampleCPanel(im)); } } /** * カスタムパネルのメイン画面です */ class SampleCPanel extends CostumePanel implements SPObject { String list1[] = {"男", "女"}; String list2[] = {"大工", "SE", "OL", "料理人", "セールス"}; String list3[] = {"コンポ", "のど飴", "教科書", "マウス", "車"}; CButton bt = new CButton(" 登 録 "); CTextBox tx = new CTextBox("山田", 10, 10); CCheckList ck = new CCheckList( CCheckList.RADIO_BUTTON, list1, Graphics.getColorOfName(Graphics.BLACK), Graphics.getColorOfRGB(200, 200, 200, 200), Graphics.getColorOfName(Graphics.WHITE)); CPulldownList ls = new CPulldownList(list2, Graphics.getColorOfName(Graphics.BLACK), Graphics.getColorOfRGB(255, 255, 255, 200), Graphics.getColorOfName(Graphics.WHITE)); CCheckList cd = new CCheckList( CCheckList.CHECKBOX, list3, Graphics.getColorOfName(Graphics.BLACK), Graphics.getColorOfRGB(200, 200, 200, 200), Graphics.getColorOfName(Graphics.WHITE)); CBulletinBoard cb = new CBulletinBoard(null, "ご登録", Graphics.getColorOfName(Graphics.PURPLE), Graphics.getColorOfRGB(255, 255, 200, 200), Graphics.getColorOfName(Graphics.RED)); /** * コンストラクタ */ public SampleCPanel(Image im) { this.im = im; try { // スクラッチパッドからデータを復元 (前回押したボタン) SPControl.read(this, 0, 1); } catch (IOException e) { } } /** * キャンバスに表示するために使用するメソッドです。<br> */ public void paint(Graphics g) { CLabel lb1 = new CLabel("氏名",0,0,-1); CLabel lb2 = new CLabel("職業",0,0,-1); CLabel lb3 = new CLabel("性別",0,0,-1); CLabel lb4 = new CLabel("お好きな商品をどうぞ", Graphics.getColorOfName(Graphics.RED),0,-1); CLabel lbx = new CLabel("この情報は大切に保管されます。", Graphics.getColorOfName(Graphics.BLACK), Graphics.getColorOfRGB(100, 100, 100, 100), Graphics.getColorOfName(Graphics.WHITE)); g.lock(); // 背景画像が存在する場合 if (im != null) { g.drawImage(im, (Display.getWidth() - im.getWidth())/2, (Display.getHeight() - im.getWidth())/2); } // 背景画像を少しだけ透過する g.setColor(Graphics.getColorOfRGB(240, 240, 255, 230)); g.fillRect(0, 0, Display.getWidth(), Display.getHeight()); // テキスト lb1.show(g, 2, 1, true); tx.show (g, 12, 1, true); // プルダウンリスト lb2.show(g, 2, 3, true); ls.show (g, 12, 3, 15, true); // ラジオボタン lb3.show(g, 2, 5, true); ck.show (g, 12, 5, 2, 4, true); // チェックボックス lb4.show(g, 2, 7, true); cd.show (g, 2, 9, 3, 8, true); // ラベル lbx.show(g, 4, 13, true); // ボタン bt.show (g, 14, 16, true); // ブリテンボード cb.show (g, 32, 0, 6, 1, true); // イベントの登録 addEvent(tx); addEvent(ls); addEvent(ck); addEvent(cd); addEvent(bt); g.unlock(true); } /** * イベントが通知された時に呼ばれる処理です。<br> */ public void processEvent2(CComponent c, int t, int p) { if (c == bt && t == CostumePanel.BUTTON_PRESSED) { // ボタンが押されたらダイアログ表示 CDialog c1 = new CDialog(); c1.setCanvas(this); try { // スクラッチパッドへデータを保管 SPControl.write(this, 0, 1); } catch (IOException e) { } Display.setCurrent(c1); } else if (c == tx && t == CostumePanel.TEXT_CHANGED) { } else if (c == ls && t == CostumePanel.SELECTION_CHANGED) { } else if (c == ck && t == CostumePanel.SELECTION_CHANGED) { } else if (c == cd && t == CostumePanel.SELECTION_CHANGED) { } } /** * スクラッチパッドから取得するデータ */ public int readObject(DataInputStream in) throws IOException { // 名前 byte data[] = new byte[10]; in.read(data); tx.setText(new String(data).trim()); // 職業 ls.select(in.readInt()); return 14; } /** * スクラッチパッドへ保存するデータ */ public int writeObject(DataOutputStream out) throws IOException { // 名前 byte data[] = new byte[10]; String sdata = tx.getText(); System.arraycopy(sdata.getBytes(), 0, data, 0, sdata.getBytes().length); out.write(data); // 10Byte // 職業 out.writeInt(ls.getSelectedIndex()); // 4Byte return 14; } private Image im = null; } /** * ダイアログ表示クラスです。<br> * CBulletinBoard と CButton の組み合わせで作成しています。<br> * * <pre> * 【実行例】 * CDialog c1 = new CDialog(); * c1.setCanvas(this); * Display.setCurrent(c1); * </pre> */ class CDialog extends CostumePanel { CBulletinBoard cb = new CBulletinBoard("登録確認", "\n\nこの情報で登録してもよろしいですか?", Graphics.getColorOfName(Graphics.BLACK), Graphics.getColorOfRGB(255, 255, 200, 200), Graphics.getColorOfName(Graphics.WHITE)); CButton bt1 = new CButton(" はい "); CButton bt2 = new CButton("いいえ"); /** * キャンバスに表示するために使用するメソッドです。<br> */ public void paint(Graphics g) { g.lock(); // 遷移元のキャンパスの画像を背景にする。 g.drawImage(im, 0, 0); // ブリテンボードの表示 cb.show(g, 4, 3, 30, 11, true); // ボタンの表示 bt1.show(g, 10, 12, false); bt2.show(g, 22, 12, false); addEvent(bt1); addEvent(bt2); g.unlock(true); } /** * 遷移元のキャンパスを設定します。<br> * * Display.setCurrent()する前に実行してください。 * * @param c 遷移元のキャンパスを指定します。 */ public void setCanvas(Canvas c) { cs = c; // 遷移元のキャンパスの画像をバックバッファに取得する。 int pd[] = cs.getGraphics().getRGBPixels(0, 0, cs.getWidth(), cs.getHeight(), null, 0); im = Image.createImage(cs.getWidth(), cs.getHeight(), pd, 0); } /** * イベントが通知された時に呼ばれる処理です。<br> */ public void processEvent2(CComponent c, int t, int p) { // ボタンのイベント if (t == CostumePanel.BUTTON_PRESSED) { // ボタン1が押された if (c == bt1) { // 完了画面にやさしく遷移する Canvas c1 = new TestLabel(); CCanvasFade.fade(CCanvasFade.FADE_BLENDIMAGE, this, c1, 5); im = null; } // ボタン2が押された else if (c == bt2) { // 遷移元の画面に戻る cb.clear(); im = null; Display.setCurrent(cs); } } } private Canvas cs = null; // 遷移元のキャンパス private Image im = null; // 遷移元のキャンパスイメージ } /** * カスタムパネルの完了画面です。 */ class TestLabel extends CostumePanel { /** * キャンバスに表示するために使用するメソッドです。<br> */ public void paint(Graphics g) { CLabel lb = new CLabel("ご登録ありがとうございました。"); g.lock(); lb.show(g, 4, 8, true); g.unlock(true); } }
このサイトは、アイティマークス株式会社のポータルサイトです。