程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 使用MMAPI播放gif動畫

使用MMAPI播放gif動畫

編輯:J2ME
使用MMAPI播放gif動畫 作者:佚名    文章來源:bitsCN.com    更新時間:2007-11-5 15:18:58 298

MMAPI是在JSR 135中提出的,增強了Java ME平台對多媒體編程的支持。例如播放音頻和視頻文件,捕獲聲音和圖像等。目前大多數支持JTWI 1.0的手機都支持了MMAPI。本文介紹如何使用MMAPI播放gif格式的動畫。 Feedom.Net國內最早的網管網站

其實制作動畫效果可以有很多辦法,例如准備一個圖片數組,在程序中不斷的切換顯示不同的圖片,只要時間的間隔設置合理即可出現動畫的效果。如果使用MMAPI則可以直接播放gif的動畫。其實這和播放視頻文件的方法和流程是類似的。 Play.bitsCN.com小游戲

首先我們應該准備一個gif文件,放在能夠訪問到的位置,且確保這個文件會被打包進jar內。在創建播放器之前應該先確認手機上的MMAPI實現是否支持image/gif格式的播放,如果支持則創建Player,如下。

BBS.bitsCN.com國內最早的網管論壇

 private void createPlayer(InputStream is){
        String[] contents = Manager.getSupportedContentTypes(null);
        for(int i = 0;i<contents.length;i++){
            if(contents[i].toLowerCase().indexOf("image/gif") != -1){
                try {
                    player = Manager.createPlayer(is,"image/gif");
                    player.realize();
                } catch (IOException ex) {
                    ex.printStackTrace();

Feedom.Net國內最早的網管網站


                } catch (MediaException ex) {
                    ex.printStackTrace();
                }
               
            }
           
        }
    }
DL.bitsCN.com網管軟件下載

Player創建後,我們需要獲得VideoControl,然後將內容渲染到屏幕上,VideoControl提供了兩種模式,這裡我們使用USE_GUI_PRIMITIVE方式,將返回的Item追加到一個Form中顯示。最後調用Player.start()即可播放。注意在退出之前一定要釋放Player資源,關閉Player並設置為null。GifPlayer的源碼如下: Play.bitsCN.com小游戲

源程序如下 bitscn.com中國網管聯盟

/*
 * GifPlayer.Java
 *
 * Created on 2006年6月21日, 下午7:28
 */

DL.bitsCN.com網管軟件下載

package com.J2MEdev.gif; Feedom.Net國內最早的網管網站

import Java.io.IOException;
import Java.io.InputStream;
import Javax.microedition.lcdui.Display;
import Javax.microedition.lcdui.Form;
import Javax.microedition.lcdui.Item;
import Javax.microedition.media.Manager;
import Javax.microedition.media.MediaException;
import Javax.microedition.media.Player;
import Javax.microedition.media.control.VideoControl;
import Javax.microedition.midlet.*;

Feedom.Net國內最早的網管網站

/**
 *
 * @author  ming
 * @version
 */
public class GifPlayer extends MIDlet {
   
    private Display display = null;
    private Player player = null;
   
    public void startApp() {
        if(display == null)
            display = Display.getDisplay(this);
        Form form = new Form("gif player");
        InputStream is = getClass().getResourceAsStream("/a.gif");
        createPlayer(is);
        if(player == null){
            form.append("can not play image/gif");
        }else{ www.bitsCN.Net網管博客等你來搏
            VideoControl vc = (VideoControl)player.getControl("VideoControl");
            if(vc != null){
                form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE,null));
            }
        }
        display.setCurrent(form);
        try {
            player.start();
        } catch (MediaException ex) {
            ex.printStackTrace();
        }
    }
   
    private void createPlayer(InputStream is){ www.bitsCN.Net網管博客等你來搏
        String[] contents = Manager.getSupportedContentTypes(null);
        for(int i = 0;i<contents.length;i++){
            if(contents[i].toLowerCase().indexOf("image/gif") != -1){
                try {
                    player = Manager.createPlayer(is,"image/gif");
                    player.realize();
                } catch (IOException ex) {
                    ex.printStackTrace();
                } catch (MediaException ex) { 搜一搜so.bitsCN.com
                    ex.printStackTrace();
                }
               
            }
           
        }
    }
   
    public void pauseApp() {
    }
   
    public void destroyApp(boolean unconditional) {
        if(player != null){
            player.close();
            player = null;
        } bitsCN.Net中國網管博客
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved