Android播放Gif動態圖片的幾種方法

明珠之星發表於2017-07-11
下面介紹三種方式:
一、自定義GifView元件
簡介:

這個自定義的gifview元件核心程式碼就是讀取Gif資料,建立Movie例項,繪製每一幀圖片來達到Gif動態效果。這種方式比較直觀方便,程式碼量也少,不過經測試部分Gif圖片不能自適應大小,播放速度比實際播放速度快,如果要顯示的gif過大,還會出現BOOM的問題。

private void setViewAttributes(Context context, AttributeSet attrs,
			int defStyle) {
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
			setLayerType(View.LAYER_TYPE_SOFTWARE, null);
		}
		final TypedArray array = context.obtainStyledAttributes(attrs,
				R.styleable.MyGifView, defStyle, R.style.Widget_GifView);
		mMovieResourceId = array.getResourceId(R.styleable.MyGifView_gif, -1);
		mPaused = array.getBoolean(R.styleable.MyGifView_paused, false);
		array.recycle();
		if (mMovieResourceId != -1) {
			
			/**
			 * 核心程式碼,從描述檔案中讀出gif的值,建立出Movie例項
			 */
			mMovie = Movie.decodeStream(getResources().openRawResource(
					mMovieResourceId));
		}
	}

可以參考地址:http://blog.csdn.NET/y_fc75/article/details/46494929



二、使用GifView的開源jar包

作者:ant:cy:liao
主頁:http://code.google.com/p/gifview/
簡介:功能很強大的Gif庫,能設定載入方式,可以先載入後顯示或者只顯示第一幀,播放速度比實際播放速度快,如果要顯示的gif太大,會出現BOOM的問題。
使用方法:
1)將GifView的jar包匯入到專案中
2)在XML配置,用法與imageview一致
3)程式碼中配置

gif3 = (GifView) findViewById(R.id.gif3);    
// 設定Gif圖片源    
gif3.setGifImage(R.drawable.gif2);    
// 新增監聽器    
gif3.setOnClickListener(this);    
// 設定顯示的大小,拉伸或者壓縮    
gif3.setShowDimension(300, 300);    
// 設定載入方式:先載入後顯示、邊載入邊顯示、只顯示第一幀再顯示    
gif3.setGifImageType(GifImageType.COVER);  



三、使用Android-gif-drawable開源庫

簡介:android-gif-drawable是github上的優秀開源專案,原始碼和demo使用的是studio開發,所以想用eclipse開啟還要花點功夫。這個底層解析Gif使用的是C語言。它的有點久是載入大的圖片時不會出現記憶體溢位的情況。保持Gif的動畫效果,不會發生過快的情況。
Android-gif-drawable的原始碼下載地址:https://github.com/koral--/android-gif-drawable 
轉發自:http://blog.csdn.net/zhoufuqiang30/article/details/43730437

可以參考demo:http://download.csdn.Net/detail/zhoufuqiang30/8477033


總結,可優先選擇使用Android-gif-drawable開源庫

相關文章