天天看點

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加入到你的project後,布局檔案肯定

會報錯,作者所寫的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動畫便已載入完畢!

下一篇: ps