標籤:android gif
今天想在應用的Loading頁面載入一個gif動畫,但又不知道怎麼弄,就網上搜了下,看到好多人都是使用[email protected]寫的GifView.jar包,
於是就簡單瞭解了一下:
看了下作者的源碼,編寫的GifView繼承自View,那麼在使用的時候也就很方便了,可以當做一個普通的UI組件來用。
在使用普通的UI組件的時候,我們一般都使用如下的方式:
<Button android:id="@+id/submit" android:layout_width="120dp" android:layout_height="60dp" android:text="@string/submitBtn"/>
而對於我們自訂的UI控制項,我們採用的一般為如下的方式:
<包名.類名
屬性:值
...
/>
那麼,對於這種方法,GifView肯定也適用,需要注意的是:GifView所在的包名要寫正確,否則你將GifView.jar加入到你的工程後,布局檔案肯定
會報錯,作者所寫的GifView類所在的包名為:com.ant.liao 那麼我們就可是使用如下方式來寫gif動畫組件的布局檔案了:
<com.ant.liao.GifView android:id="@+id/gif" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/>
PS:需要的屬性值自己配置.
完成了布局檔案,接下來就是要對gif檔案進行載入等工作了(在OnCreate中添加如下代碼):
gf1 = (GifView) findViewById(R.id.gif);
// 設定Gif圖片源
gf1.setGifImage(R.drawable.gif);
// 設定顯示的大小,展開或者壓縮
gf1.setShowDimension(400, 400);
// 設定載入方式:先載入後顯示、邊載入邊顯示、只顯示第一幀再顯示
gf1.setGifImageType(GifImageType.COVER);
PS:載入方式的說明:
看了下作者的源碼,對於載入方式是這樣定義的:
public enum GifImageType{ /** * 在解碼過程中,不顯示圖片,直到解碼全部成功後,再顯示 */ WAIT_FINISH (0), /** * 和解碼過程同步,解碼進行到哪裡,圖片顯示到哪裡 */ SYNC_DECODER (1), /** * 在解碼過程中,只顯示第一幀圖片 */ COVER (2); GifImageType(int i){ nativeInt = i; } final int nativeInt; }
也就是說,作者提供了三種載入方式,使用時可根據不同的需求來定義。
對於動畫顯示大小的設定,個人覺得欠妥,以具體的數字來設定,可能會影響動畫的品質,所以要想擷取原動畫的品質,可以通過擷取原動畫的大小來設
置動畫的顯示地區:
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.gif); width = bitmap.getWidth(); height = bitmap.getHeight(); gf1.setShowDimension(width, height);
至此,一個gif動畫便已載入完成!
Android 載入gif動畫