2基於Third party的UI庫的設計
直接使用MIDP的UI組件來做應用界面和接口,很多時候需要大量的編程和設計工作。爲了減輕開發者的負擔,J2ME平臺上也有很多這樣的UI設計支撐庫,本節我們一LWUIT這個應用比較廣泛的例子爲例,說明如果在BlackBerry J2ME平臺上使用GUI Library去設計這個九宮格程序。
2.1 基於LWUIT的UI庫的設計規範
The Lightweight UI Toolkit (LWUIT) 是一個輕量級JavaME UI工具包。LWUIT類似Swing 的MVC架構, 支持多種佈局(Layouts), 皮膚更換, 字體, 觸摸屏, 動畫效果, Rich控件, 3D集成, Painter, 模式對畫框, I18N/L10N等。
Sun在2008年的JavaOne會議上向開發者社區推薦了LWUIT,展示了預先發布的二進制文件庫,附加工具和擴展文檔,讓開發者可以快速上手,現在Sun把整個源代碼都開放出來,更方便開發者利用LUWIT開發JavaME應用。關於LWUIT庫的使用,可以從SUN的官方網絡拿到基本示例和說明的文檔。
九宮格說白了就是幾個按鈕,擺的整整齊齊。既然是這樣就先做個MainForm,採用GridLayout()佈局,然後在Form裏面做幾個按鈕,每一個按鈕代表一個Form。
具體步驟如下:
1.在MainForm中以GridLayout形式排列九個按鈕
2.建立一個BaseForm,添加一個BackCommand
3.創建9個Form繼承自BaseForm。
public class MainForm extends Form implements ActionListener {
public static String currentText;
Command Option_CMD = new Command("選項", 0);
Command Exit_CMD = new Command("退出", 1);
public MainForm() {
//設置窗體翻轉效果
Transition in = CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL, false, 300);
setTransitionInAnimator(in);
//設置這個currentText,是爲了在點擊某個按鈕進入某個Form,然後回退時,焦點仍然在這個按鈕上
if (currentText == null) {
currentText = "我的空間";九宮格說白了就是幾個按鈕,擺的整整齊齊。既然是這樣就先做個MainForm,採用GridLayout()佈局,然後在Form裏面做幾個按鈕,每一個按鈕代表一個Form。
setLayout(new BorderLayout());
getTitleComponent().setVisible(false);
try {
String[] texts = new String[]{
"menu1",
"menu2",
"menu3",
"menu4",
"menu5",
"mene6",
"menu7",
"menu8",
“menu9”};
/*
下面是基於LCDUI頁面佈局的主要框架代碼
*/
Container buttonContainer = new Container(new GridLayout(3, 3));
for (int i = 0; i < texts.length; i++) {
Image unsel_img = r2.getImage(imgNames[i] + ".png");
final Button b = new Button(texts[i], unsel_img);
//setRolloverIcon當按鈕被選中時
b.setRolloverIcon(r2.getImage(imgNames[i] + "_sel.png"));
b.setAlignment(Label.CENTER);
b.setTextPosition(Label.BOTTOM);
b.setUIID("DemoButton");
buttonContainer.addComponent(b);
}
addComponent(BorderLayout.CENTER, buttonContainer);
addCommand(Option_CMD);
addCommand(Exit_CMD);
addCommandListener(this);
show();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
}
最後LWUIT實現的效果,和我們基於MIDP高級UI的效果比較相像。這裏需要注意是,在BlackBerry上使用第三方jar庫的時候,需要把相應的JAR庫轉成BlackBerry上可以運行的cod文件。
爲什麼要討論3rd-party的UI library,也是爲了突出BlackBerry自己的UI Library的效果,在KVM平臺上的應用UI設計,BlackBerry的UI Library是獨樹一幟的。
3基於BlackBerry的UI組件的設計
使用過類似LWUIT的佈局組件,再使用BlackBerry原生的UI組件來設計UI就會發現這個非常熟悉。
Blackberry的UI組件功能更多,使用更加靈活也更加便捷,關於BlackBerry的UI基本組件的應用介紹,可以參閱BlackBerry基本UI設計
瞭解基本UI的設計方法之後,通過BlackBerry的UI佈局組件,可以設置鋪放UI組件到BlackBerry屏幕的效果,可以得到一個完成的基於BlackBerry UI組件和屏幕布局實現的九宮格程序的介紹。這裏就不詳細敘述了。