- トップページ
- 特集PC技術
- iウィジェットを作ってみよう!
- [第4回]iウィジェットのミニアプリ作成と連携
iウィジェットを作ってみよう!
[第4回]iウィジェットのミニアプリ作成と連携
ミニアプリの作成
現在時刻と次の電車の時刻、その次の電車の時刻を表示します。
デフォルト表示するデータはフルアプリで最後に表示された路線です。
キー操作で別の路線の時刻を表示します。
ソースコードはこちらからダウンロードできます。
MainCanvasクラスとMainCanvas関数
ミニアプリ起動時に最初に呼ばれるメイン関数です。
class MainCanvas extends Canvas { byte [][][][] data; //時刻データ String [] line; //路線名データ byte lnum; //選択している路線 ShortTimer sTimer; MainCanvas() { setSoftLabel(SOFT_KEY_1, "フルアプリ"); setSoftLabel(SOFT_KEY_2, "終了"); setBackground(Graphics.getColorOfName(Graphics.WHITE)); line = new String[10]; //10 路線 data = new byte[10][22][10][3]; //10 路線*22時間*10個*3曜日 loadData(); }
paint関数
ミニアプリの画面表示時に呼ばれます。
1秒に1回画面を更新して、最新の時刻に応じた時刻表を表示しています。
public void paint(Graphics g) { Font titleFont = Font.getFont(Font.FACE_SYSTEM,32); // Calendarクラス型の変数宣言 Calendar w_calendar; // カレンダーのインスタンスを取得 w_calendar=Calendar.getInstance(); // カレンダーに現在の時刻を設定 w_calendar.setTime(new Date()); ・・・ //最初の描画の際にタイマーを作成する if(sTimer == null){ //間隔1秒間、繰り返し有りでタイマーを初期化する sTimer = ShortTimer.getShortTimer(this,1,1000,true); //タイマーをスタート sTimer.start(); } g.lock(); ・・・ g.unlock(true); }
processEvent関数
キー入力に対してどのような処理を行うか記述します。
public void processEvent(int type, int param) { if(type == Display.TIMER_EXPIRED_EVENT){ //画面を再描画する repaint(); } else if (type == Display.KEY_RELEASED_EVENT) { if (param == Display.KEY_SOFT1) { /* フルアプリに切り替えます */ (StarApplication.getThisStarApplication()).changeAppType(StarApplication.STAR_TYPE_FULLAPPLI, null); } if (param == Display.KEY_SOFT2) { (StarApplication.getThisStarApplication()).terminate(); } } }
loadData関数
データの入力は行わないので読み込み関数のみ作ります。
//時刻表データの読み込み public void loadData() {
ADF設定
ほとんどデフォルトのままですが以下の2箇所を変更します。
フルアプリと違いDrawAreaは使用せずPalletを使用します。
ミニアプリの見た目を変える場合Palletのサイズに続けて値を設定するのですが今回は使用しないので「::::」としておきます。
SPsize | 10240 |
---|---|
Pallet | 320x240:::: |
実行結果
iウィジェットの連携
iウィジェットの機能でフルアプリ、ミニアプリ、縮小表示、アイコンが切り替わります。
コメントの投稿
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1050