zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    c/c++ 标准库 map multimap元素访问
    c/c++ 标准库 map set 删除
    c/c++ 标准库 map set 插入
    c/c++ 标准库 map set 大锅炖
    c/c++ 标准库 pair 介绍
    c/c++ 标准库 set 自定义关键字类型与比较函数
    c/c++ 标准库 插入迭代器 详解
    python基础-内置函数 isinstance() 与 issubclass()
    移动端事件(其他触摸事件)hammer.js
    移动端事件(touchstart+touchmove+touchend)
  • 原文地址:https://www.cnblogs.com/secbook/p/2655500.html
Copyright © 2011-2022 走看看