Android系统默认不支持Gif图片的播放,需要自定义工具类对Gif图片进行解码、显示和播放动画。至于怎么解码Gif图片,这里在别人的代码基础进行了修改:GifFrame、GifHelper等。


1、GifActivity循环播放类



package com.orgcent.gif;


import java.io.InputStream;


import android.app.Activity;

import android.os.Bundle;

import android.view.ViewGroup.LayoutParams;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.ImageView.ScaleType;


import com.orgcent.gif.GifHelper.GifFrame;


public class AndroidGifActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv = new TextView(this);

tv.setText("Android Gif Activity");

setContentView(tv,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));


final ImageView iv = new ImageView(this);

iv.setScaleType(ScaleType.CENTER);

setContentView(iv, new LayoutParams(LayoutParams.FILL_PARENT,

LayoutParams.FILL_PARENT));

//对Gif图片进行解码

final InputStream is = getResources().openRawResource(R.drawable.cell_orig);

final GifFrame[] frames = CommonUtil.getGif(is);

System.out.println("delay:" + frames[1].delay + ",size:" + frames.length);


mGifTask = new PlayGifTask(iv, frames);

mGifTask.start();

}


@Override

protected void onDestroy() {

super.onDestroy();

if(null != mGifTask) mGifTask.stop();

}


private PlayGifTask mGifTask;

//用来循环播放Gif每帧图片

private static class PlayGifTask implements Runnable {

int i = 0;

ImageView iv;

GifFrame[] frames;


public PlayGifTask(ImageView iv, GifFrame[] frames) {

this.iv = iv;

this.frames = frames;

}


@Override

public void run() {

if (!frames[i].image.isRecycled()) {

iv.setImageBitmap(frames[i].image);

}

iv.postDelayed(this, frames[i++].delay);

i %= frames.length;

}


public void start() {

iv.post(this);

}


public void stop() {

if(null != iv) iv.removeCallbacks(this);

iv = null;

if(null != frames) {

for(GifFrame frame : frames) {

if(frame.image != null && !frame.image.isRecycled()) {

frame.image.recycle();

frame.image = null;

}

}

frames = null;

}

}

}

}

转载:Android解码/显示/播放Gif图片动画 |http://orgcent.com/android-decode-gif-play-animation/

更多相关文章

  1. Android(安卓)Training Caching Bitmaps 翻译
  2. Android编程之播放器MediaPlayer实现均衡器效果示例
  3. 检索Android图片库并显示详细信息
  4. Android——数据存储(四种方式之二)读写SD卡
  5. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主
  6. Android(安卓)调用系统相机返回data为null
  7. Android(安卓)下载图片并显示在ImageView中
  8. Android基础笔记(十七)- 多媒体编程
  9. Android使用开源框架加载图片

随机推荐

  1. Android(安卓)HttpURLConnection及HttpCl
  2. Android自定义Toast的时长、位置、及显示
  3. 在Android当中常用的控件的详解和分析
  4. 在 Android(安卓)上使用 RxNetty
  5. Android4.1.2 Email发送邮件附件中文名乱
  6. Android(安卓)IPC 通讯机制源码分析
  7. Android中常用的五种布局方式:FrameLayou
  8. Android教程之MediaStore(轉)
  9. Android推送通知指南
  10. 热点关注--Android动了Java的奶酪?