移動(dòng)信息設(shè)備描述(Mobile Information Device PRofile,MIDP) 1.0 版本提供了一套基本組件,用于支持應(yīng)用程序需要的大多數(shù)用戶界面(UI)。但是,假如您的需求比較復(fù)雜,那么一般必須要從 Canvas 派生子類,并重新設(shè)計(jì)。
MIDP 2.0 改變了所有這些?,F(xiàn)在您可以建立自定義組件,這樣您就可以對用戶交互進(jìn)行細(xì)粒度的控制,而且可以適應(yīng)現(xiàn)有的窗體框架,符合設(shè)備本身的觀感。
在這篇文章里,我們通過建立一個(gè)簡單的 Outliner MIDlet,來研究這些新的定制功能。大綱是用來組織想法、保持列表,甚至進(jìn)行項(xiàng)目計(jì)劃的工具——是一個(gè)在移動(dòng)設(shè)備上非常有用的應(yīng)用程序。Outliner MIDlet讓用戶可以構(gòu)建層次結(jié)構(gòu)良好的窗體項(xiàng)目大綱。它們可以加入或刪除,縮進(jìn)或凸出,還可以用一種在 MIDP 2.0 出現(xiàn)之前不可能的方法折疊和展開項(xiàng)目。
假如您對于使用 MIDP 建立用戶界面不熟,請讓我們回顧一下基礎(chǔ)知識(shí)。
MIDP 1.0 提供了一些骨干 UI 組件,包括選項(xiàng)組(ChoiceGroup),日期字段(DateField), Gauge, 圖像項(xiàng)目(ImageItem), 字符串項(xiàng)目(StringItem), 以及文本字段(TextField)。這些類全部擴(kuò)展自公共基類 Item。和它們的 AWT 等價(jià)物非常相似,項(xiàng)目是我們用來控制底層本機(jī) UI 小部件的抽象。因?yàn)楸緳C(jī)實(shí)現(xiàn)在不同設(shè)備之間,可能有很大的差異,而事實(shí)上也是這樣,所以 Item 公共接口對于底層小部件的外觀和行為只提供了非常少的控制。
窗體的存在,是為了按行排列項(xiàng)目,使其最好地適合屏幕尺寸、適應(yīng)項(xiàng)目運(yùn)行所在設(shè)備的能力。至少從理論上講,MIDP 實(shí)現(xiàn)可以方便、無縫地使您的應(yīng)用程序適應(yīng)設(shè)備硬件;副作用是您對用戶界面觀感的影響受到限制。
MIDP 2.0 改善了窗體,為項(xiàng)目布局提供了更好的控制,還提供了一個(gè)新類 CustomItem,這個(gè)類讓您可以建立自己的窗體項(xiàng)目。Outliner 利用全部這些能力,為用戶提供以下特性:
窗體增強(qiáng)的布局能力使這種表示成為可能。 CustomItem 的 paint() 方法,按照自己喜歡的方式畫出這樣的指示器。 這些特性在 MIDP 1.0 里都是不可能的。下面讓我們看看這種魔術(shù)是如何做到的。
Outliner 類自己就是一個(gè)普通的 MIDlet。功能的核心是 CustomItem 的子類,叫做 OutlineItem。你要實(shí)現(xiàn)自己的 CustomItem 類時(shí)需要做的事,在這個(gè)類里都做了,所以您應(yīng)當(dāng)好好在源代碼里看看它。構(gòu)造函數(shù)是一個(gè)開始的好地方:
/*** 用指定的初始縮進(jìn)和文本建立 OutlineItem*/public OutlineItem( int inIndent, String inText ){ // 我們不想要系統(tǒng)提供的標(biāo)簽super( null ); indent = inIndent; text = inText; hiddenChildren = null; // 定義布局 setLayout( LAYOUT_EXPAND LAYOUT_TOP LAYOUT_NEWLINE_AFTER ); // 加入一直適用的命令 addCommand( editCommand ); addCommand( insertCommand );}
調(diào)用構(gòu)造函數(shù),把要顯示的文本、項(xiàng)目應(yīng)當(dāng)縮進(jìn)的次數(shù)傳遞給構(gòu)造函數(shù),就可以建立 OutlineItem。
在構(gòu)造函數(shù)里,第一項(xiàng)任務(wù)是調(diào)用超類的構(gòu)造函數(shù)。MIDP 項(xiàng)目不僅僅代表 UI 小部件本身,還有一個(gè)標(biāo)簽向用戶標(biāo)識(shí)部件。例如,一個(gè)文本字段是一個(gè)包含文本的框;它的標(biāo)簽通常出現(xiàn)在它的左邊,是描述文本框中內(nèi)容的單詞,比如 Name 或 PassWord。大綱項(xiàng)不需要標(biāo)簽,所以我們的構(gòu)造函數(shù)把 null 作為必要參數(shù)傳給超類的構(gòu)造函數(shù)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注