<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Blogger Scott

    J2ME與Android系統(tǒng)的常用類、方法對比

    J2ME與Android系統(tǒng)的常用類、方法對比

     

    J2MEAndroid系統(tǒng)的常用類、方法對比

     

    J2ME系統(tǒng)

    Android系統(tǒng)

    入口程序

    MIDlet

    Activity

    圖片類

    Image

    Image.createImage(path);

    BitMap

    BitmapFactory.decodeResource(getResources(),R.drawable.map0);

    畫筆

    Graphics

    Canvas

    繪畫

    Displayable

    View

    按鍵

    keyPressed()

    keyRepeated()

    keyReleased()

    onKeyDown()

    onKeyUp()

    onTracKballEvent()

    觸筆

    pointerPressed(),

    pointerReleased(),

    pointerDragged()

    onTouchEvent()

    打印信息

    System.out.printlt()

    Log

    生命周期-開始

    startApp(),活動狀態(tài),啟動時調(diào)用,初始化。

    onCreate(),返回時也會調(diào)用此方法。

    onCreate()后調(diào)用onStart(),

    onStart()后調(diào)用onResume(),

    生命周期-暫停

    PauseApp(),暫停狀態(tài),如來電時,調(diào)用該接口。

    onPause()

    生命周期-銷毀

    destroyApp(),銷毀狀態(tài),退出時調(diào)用。

    onStop(),程序不可見時調(diào)用onDestroy(),程序銷毀時調(diào)用

    刷新

    高級UI組件由內(nèi)部刷新實現(xiàn)。

    低級UI,canvas中通過調(diào)用線程結(jié)合repaint()來刷新,讓線程不斷循環(huán)

    高級UIHandler類通過消息的機制刷新

    onDraw()刷新接口

    低級UI開發(fā)者用線程控制更新,在lockCanvas()unlockCanvasAndPost()方法之間繪制

    數(shù)據(jù)存儲

    Record Management System (RMS)

    SQLite數(shù)據(jù)庫

    SharedPreferences

    可繪區(qū)域

    int clipX = g.getClipX(); 

    int clipY = g.getClipY(); 

    int clipW = g.getClipWidth(); 

    int clipH = g.getClipHeight(); 

    g.clipRect(x, y, width, height); 

    g.setClip(clipX, clipY, clipW, clipH);

    canvas.save();

    canvas.clipRect(x,y,x+width, y+height); 

    cavnas.resave();

    游戲中清屏

    paint.setStyle(Style.FILL);

    canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);

    canvas.drawColor(Color.BLACK);

    游戲開發(fā)包

    javax.microedition.lcdui.game

    GameCanvas

    Layer

    LayerManager

    Sprite

    TiledLayer

    無專門針對游戲的開發(fā)包,可以直接拿來主義,將J2ME的開發(fā)包稍作修改

    音效

    Player s =Manager.createPlayer(InputStream);

    s.prepare(); //創(chuàng)建

    s.start();//播放

    s.stop();//暫停

    s.stop();//關(guān)閉

    s.release();//釋放  

    MediaPlayer類處理背景音樂

    SoundPool類處理一些簡單的音效

    全屏

    CanvasSetFullScreenMode()

    getWindow().setFlags(

    WindowManager.LayoutParams.FLAG_FULLSCREEN,

    WindowManager.LayoutParams.FLAG_FULLSCREEN);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    獲得屏幕尺寸

    Canvas類的getHeight()getWidth()

    Display d = getWindowManager().getDefaultDisplay();

     screenWidth = d.getWidth();

     screenHeight = d.getHeight();

    雙緩沖

    Image bufImage=Image.createImage(bufWidth, bufHeight);

    Graphics bufGraphics=bufImage.getGraphics();

    Bitmap carBuffer = Bitmap.createBitmap(bufWidth, bufHeight, Bitmap.Config.ARGB_4444); 

    Canvas carGp = new Canvas(carBuffer);

     

     

     

     

     

          

       開始移植

     

           小白找到Android中對應的J2ME相關(guān)的替代類和替代方法后,開始噼里啪啦的改代碼了。沒過多久,首個俄羅斯方塊算是移植成功。當他開始移植下一款游戲時,發(fā)現(xiàn)又要重復的改那些代碼……

           “可不可以減少代碼的改動呢?”小白問自己。“可否用Android的相關(guān)代碼構(gòu)造一些和J2me里功能類似的代碼呢?”

     

           原則:盡量少改動J2ME項目的代碼。用Android中對應的類改寫成J2ME中的方法和類,減少以后移植的工作量,甚至實現(xiàn)無縫移植。

     

           “或許我可以構(gòu)造一個名為MIDlet實為Activity的類,這樣J2me中的入口類就不用改動了”

    Activity類改裝的MIDlet類:

    public abstract class MIDlet extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    startApp(); 

    public abstract void destroyApp(boolean unconditional); 

    public String getAppProperty(String key) { 

    return null; 

    public abstract void startApp(); 

    public void notifyDestroyed() { 

    public void notifyPaused() {} 

    public void pauseApp() {} 

    public void platformRequest(String URL) {} 

    public void resumeRequest() {} 

     

    MIDlet類我們解決了,接下來就是非常重要的Canvas類了

    J2me里的Canvas類相當于Android體系中的SurfaceView類,都是負責繪制顯示界面的,游戲的大循環(huán)一半也在這兩個類里實現(xiàn),也就是都會實現(xiàn)Runnable類,更新邏輯和更新界面都在此類的大循環(huán)中處理。

     

    Graphics類在J2me里負責繪圖和排版樣式等。

    我們可以用Android里的Canvas類和Paint類共同組合一個Android里的Graphics類,如Graphics類的構(gòu)造函數(shù)可這樣定義:

    public Graphics(Bitmap bitmap) {    

        this.bitmap = bitmap;    

        this.canvas = new Canvas(bitmap);    

        this.canvas.clipRect(0, 0, bitmap.getWidth(), bitmap.getHeight());    

        this.canvas.save(Canvas.CLIP_SAVE_FLAG);    

        this.paint = new Paint();    

        this.clip = canvas.getClipBounds();    

    Graphics里可以設置居中方式,在Android體系里我們用Paint類來實現(xiàn)相同的效果,例如:

    public void setAlign(int align)    

        {    

            if(LEFT == align    

                    ||(Graphics.LEFT | Graphics.TOP) == align    

                    ||(Graphics.LEFT | Graphics.BOTTOM) == align)    

            {    

                paint.setTextAlign(Align.LEFT);     

            }else if(HCENTER == align    

                    ||(Graphics.HCENTER|Graphics.TOP) == align)    

            {    

                paint.setTextAlign(Align.CENTER);     

            }else if(RIGHT == align    

                    ||(Graphics.RIGHT | Graphics.TOP) == align)    

            {    

                paint.setTextAlign(Align.RIGHT);    

            }    

    }   

     

    所有的繪制方法也同樣沿用J2me中的方法名,用Android體系的代碼完成方法體,達到無縫移植。以繪制、填充矩形為例:

    public void fillArc(int x,int y,int width,int height, int startAngle,int arcAngle) {

    posted on 2011-11-07 21:37 江天部落格 閱讀(883) 評論(0)  編輯  收藏 所屬分類: Android

    主站蜘蛛池模板: 日韩在线观看免费| 久久99精品免费视频| 亚洲情XO亚洲色XO无码| 性xxxx视频免费播放直播| 亚洲成a人片在线看| 亚洲国产综合精品中文字幕| 91短视频在线免费观看| 爱情岛亚洲论坛在线观看| 亚洲男人天堂av| 亚洲av无码天堂一区二区三区| 亚洲美女视频免费| 极品美女一级毛片免费| 亚洲网红精品大秀在线观看| 国产伦精品一区二区三区免费下载 | 亚洲国产精品碰碰| 免费v片在线观看视频网站| 日亚毛片免费乱码不卡一区| 亚洲老熟女@TubeumTV| 国产国拍亚洲精品福利| 国产一卡2卡3卡4卡2021免费观看| 一级毛片a女人刺激视频免费| 亚洲最大的黄色网| 亚洲第一成年男人的天堂| 又粗又硬又大又爽免费视频播放| 2021在线永久免费视频| 久久国产美女免费观看精品 | 国产精品亚洲综合网站| 亚洲精品国产电影午夜| 亚洲日韩精品一区二区三区无码| 日本久久久免费高清| 亚欧人成精品免费观看| 免费成人在线视频观看| www.xxxx.com日本免费| 亚洲精品国产精品| 亚洲另类视频在线观看| 亚洲人成电影亚洲人成9999网| 亚洲国产成人VA在线观看| 日本一道高清不卡免费| 成人在线视频免费| 好先生在线观看免费播放| 国产又大又粗又长免费视频|