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