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

利用MMAPI播放gif動畫

編輯:J2ME

MMAPI是在JSR 135中提出的,加強了Java ME平台對多媒體編程的支撐。例如播放音頻和視頻文件,捕捉聲音和圖像等。目前大多數支撐JTWI 1.0的手機都支撐了MMAPI。本文先容如何應用MMAPI播放gif格局的動畫。

實在制作動畫後果可以有許多措施,例如准備一個圖片數組,在程序中不斷的切換顯示不同的圖片,只要時間的間隔設置公平即可呈現動畫的後果。假如應用MMAPI則可以直接播放gif的動畫。實在這和播放視頻文件的方法和流程是類似的。

首先我們應當准備一個gif文件,放在能夠拜訪到的地位,且確保這個文件會被打包進jar內。在創立播放器之前應當先確認手機上的MMAPI實現是否支撐image/gif格局的播放,假如支撐則創立Player,如下。

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();            } catch (MediaException ex) {                ex.printStackTrace();            }
        } }}

Player創立後,我們需要獲得VideoControl,然後將內容渲染到屏幕上,VideoControl供給了兩種模式,這裡我們應用USE_GUI_PRIMITIVE方法,將返回的Item追加到一個Form中顯示。最後調用Player.start()即可播放。留心在退出之前必定要開釋Player資源,封閉Player並設置為null。GifPlayer的源碼如下:

源程序如下

/* * GifPlayer.Java * * Created on 2006年6月21日, 下午7:28 */ package com.J2MEdev.gif; 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.*; /** * * @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 { 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) { 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) { ex.printStackTrace(); }  }  } }  public void pauseApp() { }  public void destroyApp(boolean unconditional) { if (player != null) { player.close(); player = null; } }}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved