1: 三星S5320屏幕分辯率爲 240*400 但是有一個虛擬鍵盤,高度爲80, 這個虛擬鍵盤是去不掉的, 所以實際的屏幕爲 240*320
這個手機如果用Canvas開發的話,如果你單獨用setFullScreenMode(true) ,則不會設置全屏, 因此你必須在主界面中設置一個線程,並讓這個線程一直執行setFullScreenMode(true); 纔可以設置全屏.
2: 代碼規範: <1>把用到的所有資源,就像Android開發一樣,統統放在一個類中,起名爲ResourceManager.java .
<2> 所有的UI設計都用相對座標,以便通用.
<3> 當每個Canvas結束的時候,一定要寫一個釋放函數,來釋放資源,並適當用System.gc()回收
3: 不同手機鍵值區別,
<1> NOKIA 的鍵值是比較規範的,幾乎所有的Nokia手機按健都一樣
public static final int KEY_UP = -1;
public static final int KEY_DOWN = -2;
public static final int KEY_LEFT = -3;
public static final int KEY_RIGHT = -4;
public static final int KEY_FIRE = -5; // 中間確定鍵
public static final int KEY_SOFT_LEFT = -6; // 左軟鍵
public static final int KEY_SOFT_RIGHT = -7; // 右軟鍵
<2> MOTO E2, V8 的手機銨鍵:
public static final int KEY_UP = -1;
public static final int KEY_DOWN = -2;
public static final int KEY_LEFT = -3;
public static final int KEY_RIGHT = -4;
public static final int KEY_FIRE = -5;
public static final int KEY_SOFT_LEFT = -21; // 左軟鍵
public static final int KEY_SOFT_RIGHT = -22; // 右軟鍵
<3> MOTO E398 ; L7 --- Key Code
public static final int KEY_UP = -1;
public static final int KEY_DOWN = -6;
public static final int KEY_LEFT = -2;
public static final int KEY_RIGHT = -5;
public static final int KEY_FIRE = -20; // 中間鍵
public static final int KEY_SOFT_LEFT = -21; // 左軟鍵
public static final int KEY_SOFT_RIGHT = -22; // 右軟鍵
<4> 其它按鍵
public static final int KEY_0 = 48;
public static final int KEY_1 = 49;
public static final int KEY_2 = 50;
public static final int KEY_3 = 51;
public static final int KEY_4 = 52;
public static final int KEY_5 = 53;
public static final int KEY_6 = 54;
public static final int KEY_7 = 55;
public static final int KEY_8 = 56;
public static final int KEY_9 = 57;
public static final int KEY_POUND = 35;
public static final int KEY_STAR = 42;
4: <1> 除法用 >>>1 ,乘法用 <<1 . 而不是用 /2 ,*2等方法
5: 目前的疑難問題,
<1>: Moto E6 手機,當程序調用系統瀏覽器後,返回的程序的時候, 程序不能全屏,我做過以下處理
在ShowNotify() 方法中用 setFullScreenMode(true);
在主界面中設置一個線程,讓線程不斷循環執行setFullScreenMode(true);
在sizeChanged(int w,int h) 設置 setFullScreenMode(true)/
我用以上方法都不行,不知道那位高手知道,到底怎麼弄?
補充一下: 這個問題的解決方法:
在主界面設置一個boolean keyIsValide
當調用瀏覽器的時候,這個keyIsValide被設置成false ,也就是說瀏覽器返回的時候第一次觸摸鍵不管用,
當瀏覽器返回時,用戶第一次觸摸屏幕的時候,再把 keyIsValide=true,回到原始狀態,這時候屏幕也就全屏了。
<2> : 對Nokia S40的手機, 比如5300:
因爲系統的原因, 單任務, 當你在調用 platformRequest(String URL) ,來調用系統瀏覽器的話,這時程序會在後臺響應,調用系統瀏覽器,但不會顯示出來,只有當你退你應用程序的時候,瀏覽器纔會出來 (挺鬱悶!)
解決方法: 看j2me的API ,,,發現 platformRequest(String URL) 會返回一個boolean 值
此方法, 當返回 true的時候, 就是說,需要程序退出, false: 程序不需退出,支持多任務
那麼就可以這樣判斷: boolean isExist=platformRequest(String Url)
當返回true的時候,就結束我們的應用程序, 來顯示瀏覽器.
<3> 對於Nokia S40比如5300 還有連續按鍵的問題
當從高級界面切換到低級界面的時候, 在高級界面按 "返回" 鍵時, 就會觸發低級界面的 "返回鍵"
解決方法:
在低級界面定義一個 boolean isKeyValide=false;
在 showNotify() 方法中 用一個線程暫停 300毫秒, 然後改變爲 isKeyValide=true;
在 keyPressed(int keyCode) 方法中 做一個判斷
if(! isKeyValide) {
return;
}
當isKeyValide爲false的時候,不作任何處理,,直接返回!, 這樣就可以解決了.