2015/12/19

Android 播放 GIF 動畫圖檔

在 Android 中要顯示 GIF 動畫圖檔,

且要它動起來,

可以參考 GifAnimationDrawable GitHub 專案,

只需要兩個 Java 檔案當作 Library: GifAnimationDrawable.java, GifDecoder.java,

就可以讓 Android 實現此功能,

範例, 參考如下 :
 程式碼
public class HelloWorld extends Activity
{
    private ImageView iv2;
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView( R.layout.main );
        setTitle("Gif 動畫");
        
        ImageView iv = (ImageView)findViewById( R.id.image1);
        
        iv2 = (ImageView)findViewById( R.id.image2);
        iv2.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v)
            {
                // 點擊一下, 再開始播放一次
                // 以下寫法, 等同 gif2.setVisible(true, true);
                ((GifAnimationDrawable)iv2.getDrawable()).setVisible(true, true);
            }
        });
        
        try
        {
            // 取得 Gif 動畫檔
            GifAnimationDrawable gif1 = new GifAnimationDrawable( getResources().openRawResource(R.raw.anim1) );

            // Gif Drawable 設定給 ImageView
            iv.setImageDrawable(gif1);
            
            // 連續播放
            gif1.setOneShot(false);
            
            // 開始播放
            gif1.setVisible(true, true);
            // ----------------------------------
            
            // 取得 Gif 動畫檔
            GifAnimationDrawable gif2 = new GifAnimationDrawable( getResources().openRawResource(R.raw.anim2) );

            // Gif Drawable 設定給 ImageView
            iv2.setImageDrawable(gif2);
            
            // 只播放一次
            gif2.setOneShot(true);
        }
        catch( IOException ioe ){}
    }
}