J2ME手机全屏幕问题
|
|
Author: 一滴蔚蓝色 | Date: 2007-08-26 |
View: 1672 |
开发技术 - 新手上路 | Digg:
0
|
|
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 转载请保留以下信息: 更多阅读: |
|
| 最近更新 ( 2008-04-13 ) |
尚无评论发表