BlackBerry開發實現類似Lwuit的Tabbed Pane效果
本文和大家重點學習一下Black Berry開發實現類似Lwuit的Tabbed Pane效果,Lwuit雖然有Black Berry的版本,它將所有版本的包括QWERTY、suretype、touch等的不同系統版本混合到一起,給裁剪帶來很大難度。
BlackBerry開發實現類似Lwuit的TabbedPane效果
Lwuit雖然有BlackBerry開發的版本,但是對其源代碼進行分析過后才發現并不能直接應用于實際項目中,它將所有版本的包括QWERTY、suretype、touch等的不同系統版本混合到一起,給裁剪帶來很大難度。目前對其設計結構并不十分明確,所以源代碼的裁剪過程比較混亂。雖然blackberryUI不提供類似Lwuit的分頁效果,但是我們可以利用現有的API簡單的模仿。等一些目前棘手的問題解決后,再慢慢研究吧。。。
兩種實現方法:
1、使用屏幕Screen切換;
2、使用Graphics封裝。
這兩種方法都要用到滾輪的navigationMovement()事件響應函數,所以必須在需要切換的屏幕中重寫這個事件。
◆實現一:使用屏幕Screen切換
思路:在UiApplication的構造函數中先將這兩個屏幕壓入堆棧。然后創建兩個Sreen,在每個Screen中重寫navigationMovement()方法。在navigationMovement()中獲取UiApplication的對象,然后調用UiApplication.pushScreen()將另外一個界面壓入堆棧。在另外一個界面中,調用UiApplication.popScreen()將自身彈出堆棧。
***個屏幕中的代碼:
- viewplaincopytoclipboardprint?
- /*
- *滾輪滾動事件響應
- *滾輪動作:向上dy=-1,向下dy=1,向左dx=-1,向右dx=1
- *@seenet.rim.device.api.ui.Screen#navigationMovement(int,int,int,int)
- */
- protectedbooleannavigationMovement(intdx,intdy,intstatus,inttime){
- //Dialog.alert("TrackBallmoved:\r\n"+"x:"+dx+"\r\ny:"+dy);
- if(dx>0&&this.isDisplayed()){
- SillyDowntheApp=(SillyDown)this.getApplication();
- theApp.popScreen(theApp.getFirstScreen());
- returntrue;
- }
- returnfalse;
- }
- /*
- *滾輪滾動事件響應
- *滾輪動作:向上dy=-1,向下dy=1,向左dx=-1,向右dx=1
- *@seenet.rim.device.api.ui.Screen#navigationMovement(int,int,int,int)
- */
- protectedbooleannavigationMovement(intdx,intdy,intstatus,inttime){
- // Dialog.alert("TrackBallmoved:\r\n"+"x:"+dx+"\r\ny:"+dy);
- if(dx>0&&this.isDisplayed()){
- SillyDowntheApp=(SillyDown)this.getApplication();
- theApp.popScreen(theApp.getFirstScreen());
- returntrue;
- }
- returnfalse;
- }
- 第二個屏幕中的代碼:
- viewplaincopytoclipboardprint?
- /*
- *滾輪滾動事件響應
- *滾輪動作:向上dy=-1,向下dy=1,向左dx=-1,向右dx=1
- *@seenet.rim.device.api.ui.Screen#navigationMovement(int,int,int,int)
- */
- protectedbooleannavigationMovement(intdx,intdy,intstatus,inttime){
- //TODOAuto-generatedmethodstub
- if(dx<0&&this.isDisplayed()){
- SillyDowntheApp=(SillyDown)this.getApplication();
- theApp.pushScreen(theApp.getFirstScreen());
- returntrue;
- }
- returnfalse;
- }
- /*
- *滾輪滾動事件響應
- *滾輪動作:向上dy=-1,向下dy=1,向左dx=-1,向右dx=1
- *@seenet.rim.device.api.ui.Screen#navigationMovement(int,int,int,int)
- */
- protectedbooleannavigationMovement(intdx,intdy,intstatus,inttime){
- //TODOAuto-generatedmethodstub
- if(dx<0&&this.isDisplayed()){
- SillyDowntheApp=(SillyDown)this.getApplication();
- theApp.pushScreen(theApp.getFirstScreen());
- returntrue;
- }
- returnfalse;
- }
點評:這種實現方式比較簡單,但是效果一般。
◆實現二:使用Graphics封裝
思路:使用Graphics封裝一個LabelField,然后在navigationMovement()方法中重繪每個Field。
代碼:(正在編寫中,先做個標記)
點評:可以使用這種方法封裝一個TabbedPane,界面顏色、寬度、高度、字體等都可以自行設置,界面比較華麗,但是代碼比較復雜。
【編輯推薦】
- BlackBerry開發中Windows+eclipse環境配置及Helloworld
- 九步實現BlackBerry開發程序發布應用到app world
- BlackBerry開發中七步實現創建app world賬號
- BlackBerry開發環境中javaloader使用詳解
- 黑莓開發中黑莓手機程序訪問網絡能走代理服務器的三種方式