J2ME手机全屏幕问题

 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
原文地址:https://www.cnblogs.com/secbook/p/2655500.html