這次作業一是要做一個萬年曆,完成了順手把他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當做資料儲存媒介,關機不會遺失內容
- 使用Third Party UI Library - 可以做出較為進階的特效或者和使用者主題結合
- 增加跳躍日期功能 - 直接跳到指定日期
- 增加週檢視 - 更精確的時間事件表,以兩小時為單位
- 增加不同類別 - 不同欄位設計、不同圖示(Advanced)
- 增加使用者自定類別功能(Advanced)
沒有留言:
張貼留言