2009年4月12日 星期日

行動商務作業 J2ME 萬年曆




這次作業一是要做一個萬年曆,完成了順手把他po上來

記得上次動手做萬年曆已經是六年前的事情了,那時候是大一修程式語言的時候用Pascal寫的
Pascal可以用的Resource相對於Java是少了很多,因此當時幾乎什麼都要自己寫

相對之下,用Java裡的Calendar API可以少掉一些對於日期上的計算
以前修Java課的時候也有用過Calendar這個抽象類別,所以本來以為很快就會搞定這個部分

不過寫完一個Java版本的時間計算的class後才發現,
J2me裡面的Calendar和Java中所定義的不太一樣
有些東西被精簡掉了,於是只好再寫一個J2me的版本

完成Calendar邏輯的部分,才知道原來UI的設計才是這個作業的困難之處!
原本以為table這種基本的UI應該是隨便new一下就有的東西
沒想到J2me的High-level UI這麼簡陋,雖然可以用StringItem排列達到相同的UI效果,
不過KeyPress Event的接收卻是個問題
中間試過很多方法,也發現很多好玩且可行的方法,
不過最後還是決定先自己用Canvas自己畫一個了,
順便熟悉一下Canvas這個Low-level UI,之後如果要設J2me Game才不會手忙腳亂

基於Open Source精神,此程式以GPL的形式發佈。

CalendarCanvas.java
CalendarWidget.java
Note.java

底下是Demo影片(臨時找不到錄影軟體,因而用未註冊的freeware,有未註冊字樣請見諒)
我簡單的操作一下它的新增和刪除的紀錄備忘功能
以及它可以跨月跨年任意跳躍時間的萬年曆功能



目前的版本已經完成的Features:

  • 萬年曆功能
  • 備忘新增和刪除功能
  • 動態計算長寬和網格大小,換成不同的螢幕大小程式不用重寫(參照最上面附圖)
  • 可以在Nokia S60或Sun WTK的模擬器上運行(後來發現MIDlet要能在S60上跑寫法要夠嚴謹)
  • 使用RMS當做資料儲存媒介,關機不會遺失內容
之後預計要做的Enhancements,標示Advanced是比較進階且難度高的:

  • 使用Third Party UI Library - 可以做出較為進階的特效或者和使用者主題結合
  • 增加跳躍日期功能 - 直接跳到指定日期
  • 增加週檢視 - 更精確的時間事件表,以兩小時為單位
  • 增加不同類別 - 不同欄位設計、不同圖示(Advanced)
  • 增加使用者自定類別功能(Advanced)

沒有留言:

張貼留言