天天看點

[j2me]二級菜單示範 開源聲明 1背景、功能和特别之處 2 開源版權聲明 3 思路 修改曆史

鄭昀@ultrapower

産品名稱

産品版本

Keyword: JavaME 二級菜單

MenuBarlet

1.0.20

 [J2ME]二級菜單示範

(MenuBarlet)

開源說明

我的資源:

<a href="http://files.cnblogs.com/zhengyun_ustc/menubar-1.0.20-src.rar">http://files.cnblogs.com/zhengyun_ustc/menubar-1.0.20-src.rar</a>

這個1.0.20版本的j2me軟體,能夠在Nokia S60系列、索愛K700C和摩托羅拉Pebl U6手機上運作。

提請注意的是,由于本源代碼思路來自于網友相助,并且引入了jmobilecore/bluegammon/等開放源代碼庫的一些類,是以我也遵循GPL協定,請看後面的“開源版權聲明”。

<a href="http://files.cnblogs.com/zhengyun_ustc/menubar-deployed.rar">http://files.cnblogs.com/zhengyun_ustc/menubar-deployed.rar</a>

Nokia S60系列安裝程式,用資料線傳menubar.jar到您的手機上即可安裝。

本文檔給出MenuBarlet的開源說明。

第1章 簡單描述MenuBarlet的功能和特别之處。

第2章 描述調用MenuBarlet的開源版權聲明。

第3章 給出了 MenuBarlet的思路和設計細節。

摘要:本章 簡單描述MenuBarlet的背景、功能和特别之處。

這裡給出Opera Mini的界面,讓你有一個主觀的感受:

我們提供的功能有:

針對手機上以下幾種按鍵,菜單會自動伸縮或響應指令:

l         KEY_SOFT_LEFT和KEY_SOFT_RIGHT,代表高端手機的兩個左右軟鍵;

l         KEY_UP、KEY_DOWN、KEY_LEFT和KEY_RIGHT,上下左右按鍵;

l         KEY_FIRE,代表高端手機的“Fire”鍵。

繪制的部分有四種:

l         主菜單,即第一級菜單;

l         子菜單,即第二級菜單;

l         螢幕下方的狀态欄或者左右軟鍵示意按鈕;

l         整個螢幕的背景。

下圖示明了手機上的按鍵:

下圖給出了繪制部分的區域劃分:

左右軟按鈕:

我們按照bluegammon的行事方式,将繪制底邊左右軟按鈕封裝到了SoftButtonControl類裡面。這樣,通過一個标志,可以設定兩種不同的繪制風格。

其一如下所示:

其二:

第二種風格中,繪制的按鈕矩形會自動随着左右軟按鈕的标題而伸縮。

不同機器鍵值不同:

如若要釋出到不同廠商的機器上,需要根據不同機器的按鍵值而修改。即,因為同樣是KEY_FIRE鍵,Nokia平台下定義的數值為-5,而摩托羅拉的v80/220/300/400/500/600則聲明為20。

是以,你在釋出的時候,必須針對此,選擇用源代碼中

MenuBar\src\com\ultrapower\canvas目錄下的不同PlatformCanvas代碼。比如要釋出到Nokia手機上,則不用修改PlatformCanvas.java;釋出到摩托羅拉手機上,則使用PlatformCanvas.motov檔案中的代碼替換PlatformCanvas.java;釋出到三星手機上,則使用PlatformCanvas.samsung檔案中的代碼替換PlatformCanvas.java。

由于我這個版本的 MenuBarlet 思路和部分代碼來自于朋友,也是混合了bluegammon/jmobilecore等基礎代碼整合而來的,是以決定遵照GPL協定的大意開放源代碼,您可以自由傳播和修改,在遵照下面的限制條件的前提下:

條件1

隻要你在MenuBarlet的每一副本上明顯和恰當地出版版權聲明,保持此許可證的聲明和沒有擔保的聲明完整無損,并和程式一起給每個其他的程式接受者一份許可證的副本,你就可以用任何媒體複制和釋出你收到的原始的程式的源代碼。你可以為轉讓副本的實際行動收取一定費用,但必須事先得到鄭昀的同意。

條件2

你可以修改MenuBarlet程式的一個或幾個副本或程式的任何部分,以此形成基于程式的作品。隻要你同時滿足下面的所有條件,你就可以按前面第一款的要求複制和釋出這一經過修改的程式或作品。

a)

你必須在修改的檔案中附有明确的說明:你修改了這一檔案及具體的修改日期。

b)

你必須使你釋出或出版的作品(它包含程式的全部或一部分,或包含由程式的全部或部分衍生的作品)允許第三方作為整體按許可證條款免費使用。

c)

如果修改的程式在運作時以互動方式讀取指令,你必須使它在開始進入正常的互動使用方式時列印或顯示聲明:包括适當的版權聲明和沒有擔保的聲明(或者你提供擔保的聲明);使用者可以按此許可證條款重新釋出程式的說明;并告訴使用者如何看到這一許可證的副本。(例外的情況:如果原始程式以互動方式工作,它并不列印這樣的聲明,你的基于程式的作品也就不用列印聲明)。

這樣,您就可以自由使用并傳播本源代碼,當然請您原封不動地保留原作者資訊。

摘要:本章給出了 MenuBarlet的思路和設計細節。

畫圖主方法中,判斷是否畫菜單,然後執行:

u       每次都事先清理螢幕,以防止某些區域不更新;

u       繪制背景圖檔在螢幕正中間;

u       畫菜單;

u       畫左右軟鍵(抑或是狀态欄)的菜單文字。

對于畫二級菜單,我們則使用MenuBarCanvas的drawMenuBarandItem方法:

n         讓目前所選的菜單索引值始終保持在菜單集合内;

n         畫子菜單;

n         畫主菜單。

至于具體畫菜單,則由MenuBarCanvas的drawMenu方法完成:

l         圈定特定區域,也就是整個螢幕;

l         逐個菜單繪制邊框和背景色;

l         繪制菜單标題。

那麼,菜單項由MenuItem類來封裝,并通過MenuBarCanvas的updateMenuItemCoordinate方法來計算每一個菜單項的偏移坐标。

響應按鍵,均由keyPressed和MenuKeyPressed來處理。

具體情況,請看MenuBarCanvas代碼,注釋非常詳細,應該是一望即知。

編寫者

日期

關鍵詞

2006-02-16

Mobile

二級菜單,Canvas,

Opera Mini,

Java,J2ME