J2ME遊戲手機全螢幕(這裡指標準MIDP2.0使用setFullScreenMode(true);)
做過多種機型產品的朋友都知道,雖然標準MIDP2.0支援setFullScreenMode設定全螢幕,但是之後使用getWidth(), getHeight()來取得螢幕寬高的時候會發現,很多機型都沒有全屏,那叫一個鬱悶啊,所以這裡我寫下這篇文章,協助大家來解決這個問題。 1、改方法適用於國內基本所有機型S60、S40、MOTO等,以及SoftBank 3GC等。 2、不能全屏的主要解決辦法2個:a) 使用系統內建sizeChanged()來取得螢幕寬和高;b) 在Canvas類的建構函式裡使用setFullScreenMode,然後保證建構函式結束後再調用getWidth( ), getHeight( )因為每種機器可能需要的方法不一樣,所以下面寫了個updateScreen函數,多次調用,保證各個方法都使用到,多重保險,通用性比較好。 3、代碼實現:class MyCanvas extends Canvas implements Runnable { static int scrW=0; static int scrH=0;public MyCanvas( ){print(System.getProperty("microedition.platform"));setFullScreenMode(true);//延時是以防萬一,基本不需要,可以去掉;如果特殊情況不行,延時可以加到1000試試。Thread.sleep (100); updateScreen(getWidth(), getHeight()); Thread mythread = new Thread(this);mythread.start();}protected void sizeChanged(int w, int h) // setFullScreenMode後系統自己調用,實現就行{ updateScreen(w, h);}public void updateScreen(int _w, int _h){ scrW = _w;//因為updatescreen會被調用很多次,所以這裡有個判斷,如果高度沒有變化,就不重複處理 if(_h>scrH) scrH = _h; else return;//如果使用了雙緩衝,應該在這裡設定// if(useDoubleBuffer) bufferImage=Image.createImage(scrW,scrH); }public void run( ){ updateScreen( getWidth(), getHeight() );}public void paint(Graphics g){//TODO}}//end of class MyCanvas
轉載請保留以下資訊:
作者(Author):smilelance
時間( Time ):2006.12.12
出處( From ):http://blog.csdn.net/smilelance