android中顯示gif動畫原生態一般支持的不是很好,故找了一個開源的項目,現簡單介紹如下:
GifView 是一個為了解決android中現在沒有直接顯示gif的view,只能通過mediaplay來顯示這個問題的項目,其用法和 ImageView一樣,支持gif圖片
問題:估計會出現OOM的問題,請大家思考如何避免OOM。
問題:估計會出現OOM的問題,請大家思考如何避免OOM。
使用方法:
1-把GifView.jar加入你的項目。
2-在xml中配置GifView的基本屬性,GifView繼承自View類,和Button、ImageView一樣是一個UI控件。如:
<com.ant.liao.GifView android:id="@+id/gif2"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:paddingTop="4px" android:paddingLeft="14px" android:enabled="false" />
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:paddingTop="4px" android:paddingLeft="14px" android:enabled="false" />
3-在代碼中配置常用屬性:
// 從xml中得到GifView的句柄
gf1 = (GifView) findViewById(R.id.gif1);
// 設置Gif圖片源
gf1.setGifImage(R.drawable.gif1);
// 添加監聽器
gf1.setOnClickListener(this);
// 設置顯示的大小,拉伸或者壓縮
gf1.setShowDimension(300, 300);
// 設置加載方式:先加載后顯示: GifImageType. WAIT_FINISH 、邊加載邊顯示: GifImageType. SYNC_DECODER 、只顯示第一幀再顯示: GifImageType. COVER
gf1 = (GifView) findViewById(R.id.gif1);
// 設置Gif圖片源
gf1.setGifImage(R.drawable.gif1);
// 添加監聽器
gf1.setOnClickListener(this);
// 設置顯示的大小,拉伸或者壓縮
gf1.setShowDimension(300, 300);
// 設置加載方式:先加載后顯示: GifImageType. WAIT_FINISH 、邊加載邊顯示: GifImageType. SYNC_DECODER 、只顯示第一幀再顯示: GifImageType. COVER
gf1.setGifImageType(GifImageType.COVER);
GifView的Jar包共有四個類:
GifAction.java 觀察者類,監視GIF是否加載成功
GifFrame.java 里面三個成員:當前圖片、延時、下張Frame的鏈接。
GifDecoder.java 解碼線程類
GifView.java 主類,包括常用方法,如GifView構造方法、設置圖片源、延遲、繪制等。
GifFrame.java 里面三個成員:當前圖片、延時、下張Frame的鏈接。
GifDecoder.java 解碼線程類
GifView.java 主類,包括常用方法,如GifView構造方法、設置圖片源、延遲、繪制等。
附件DEMO+源碼:
GifViewDemo.rar (799.31 KB, 下載次數: 586)
src.rar (9.21 KB, 下載次數: 260)
改進:
1.GifView怎么控制gif的播放速度? --》》修改DrawThread中的SystemClock.sleep(10);