gifframe.java

来自「手机Wap浏览器源码」· Java 代码 · 共 98 行

JAVA
98
字号
package com.gameislive.browser;

import javax.microedition.lcdui.Image;
import java.util.Vector;

/**
 * Gif帧管理器<br>
 * Gif动画被拆成一帧一个Image对象,保存在Vector中<br>
 * 播放时根据程序控制Gif动画的帧速率
 * 
 * @author pan
 *
 */
public class GifFrame {

	/**
	 * 保存所有帧系列
	 */
    private Vector frames;
    
    /**
     * 当前帧
     */
    private int index;

    public GifFrame() {
    	frames = new Vector(1);
        index = 0;
    }
    
    /**
     * 添加一帧
     * @param image
     */
    public void addImage(Image image) {
    	frames.addElement(image);
    }

    public int size() {
        return frames.size();
    }

    /**
     * 返回当前帧的Image
     * @return
     */
    public Image getImage() {
        if (size() == 0) {
            return null;
        } else {
            return (Image) frames.elementAt(index);
        }
    }

    /**
     * 下一帧
     */
    public void nextFrame() {
        if (index + 1 < size()) {
            index++;
        } else {
            index = 0;
        }
    }
    
    /**
     * 从byte[]中创建GifFrame
     * @param abyte0
     * @return
     */
    public static GifFrame CreateGifImage(byte abyte0[]) {
        try {
        	GifFrame GF = new GifFrame();
            Image image = null;
            GifDecoder gifdecoder = new GifDecoder(abyte0);
            for (; gifdecoder.moreFrames(); gifdecoder.nextFrame()) {
                try {
                    image = gifdecoder.decodeImage();
                    if (GF != null && image != null) {
                        GF.addImage(image);
                    }
                    continue;
                }
                catch (Exception e) {
                	e.printStackTrace();
                }
                break;
            }
            gifdecoder.clear();
            gifdecoder = null;
            return GF;
        } catch (Exception e) {
        	e.printStackTrace();
            return null;
        }
    }    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?