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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值