[Android开发]Gif图片下载和显示

本文总结了Android平台下加载和显示Gif图片的四种方法:1) 使用`android-gif-drawable`库,但Eclipse集成困难且部分机型存在JNI错误;2) `GifView`在加载大量图片时可能引发OOM;3) 利用`Movie`类实现显示,详细介绍了其实现过程;4) 使用`WebView`加载Gif,但需要注意资源释放问题。
摘要由CSDN通过智能技术生成

浏览了很多网上很多关于Gif图片显示的资料,总结起来一共为四种方案:

1.使用GitHub:android-gif-drawable ,具体方法网上很多参考。

缺点:目前GitHub上的源码是使用AndroidStudio写的,使用Eclipse编译起来比较麻烦,而且,使用jni,对于一般跟我一样水平的一时还搞不明白,且使用下载的最近的jar包某些机型会报jni的错,比如HTC M8 和三星S4.

2.使用GifView,该种方案在网上使用较多,参考资料也较多,说一说我使用该jar包遇到的问题,在加载大量图片的时候,我加载了一共9张图,显示第3张的时候出现OOM。

3.使用Movie,这是我在使用以上两种方案不成功之后,采用的方案,一会具体说说实现过程。

4.使用webview,该种方法没有写demo测试,具体可行性为止,看到有人问,如何释放webview加载的资源,应该是存在这样的问题的,但是,如果可以解决,也不失为一种好的方案。

具体说一说,第三种方案,使用Movie现实现实Gif图片。




/**
 * This is a View class that wraps Android {@link Movie} object and displays it.
 * You can set GIF as a Movie object or as a resource id from XML or by calling
 * {@link #setMovie(Movie)} or {@link #setMovieResource(int)}.
 * <p>
 * You can pause and resume GIF animation by calling {@link #setPaused(boolean)}.
 * <p>
 * The animation is drawn in the center inside of the measured view bounds.
 * 
 * @author Sergey Bakhtiarov
 */

public class GifMovieView extends View {

	private static final int DEFAULT_MOVIEW_DURATION = 1000;

	private int mMovieResourceId;
	private Movie mMovie;

	private long mMovieStart;
	private int mCurrentAnimationTime = 0;

	/**
	 * Position for drawing animation frames in the center of the view.
	 */
	private float mLeft;
	private float mTop;

	/**
	 * Scaling factor to fit the animation within view bounds.
	 */
	private float mScale;//控制图片显示大小

	/**
	 * Scaled movie frames width and height.
	 */
	private int mMeasuredMovieWidth;
	private int mMeasuredMovieHeight;

	private volatile boolean m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值