开发过j2me的或多或少都会碰到一些手机的bug(噢,说错了,抬举他们了,是一定会碰到,O(∩_∩)O~)
这里要说的是Canvas.setFullScreenMode(true)的bug,真机表现的五花八门,有正常的,显示一半的,没反应的
因为为了程序的性能,一般程序中都不会直接在paint()中直接调用getHeight()和getWidth(),一半在初始话的时候如下:
this.setFullScreenMode(true);
screenW = this.getWidth();
screenH = this.getHeight();
此时你是否会发现,很多手机返回的screenH是错的,好了,下面就是为了解决这个问题的:
---------------
初始化时,如下代码:
int oldScreenH = this.getHeight();
this.setFullScreenMode(true);
screenW = this.getWidth();
screenH = this.getHeight();
if(screenH > oldScreenH){
isSizeChange = true;
}
---------------
一般你的程序肯定会有个加载界面,在加载中如下:
new Thread(){
public void run(){
boolean sign = true;
while(sign){
//等界面已经更变才开始真正运行程序
if(isSizeChange){
sign = false;
//开始运行真正的需要的程序
}
}
}
}.start();
---------------
//在Canvas中重写sizeChanged
protected void sizeChanged(int w, int h) {
if(h < screenH || isSizeChange){
return;
}
this.screenW = w;
this.screenH = h;
isSizeChange = true;
}