Android加載Gif圖片的一般方法:Movie實現

版權聲明:本文爲Zhang Phil原創文章,歡迎轉載!轉載請註明出處:http://blog.csdn.net/zhangphil

Android加載Gif圖片的一般方法:Movie實現

Android的ImageView無法直接加載Gif圖片,如果需要在自己的代碼中加載一個gif圖片(這很常見,比如下載過程中的loading以示正在下載的轉動的圓球),則無法直接用ImageView。鑑於此,Android社區開發者爲解決此問題貢獻了很多解決方案,其中一種比較簡易且比較流行的做法是通過Android Movie的方式把一個gif圖片當作一個原始的資源加載到Movie,然後Movie將其解析爲Movie幀進行加載。具體代碼如下:


    import android.content.Context;  
    import android.graphics.Canvas;  
    import android.graphics.Movie;  
    import android.util.AttributeSet;  
    import android.view.View;  

    public class ZhangPhilGifView extends View {  

        private Movie mMovie;  
        private long mMovieStart = 0;  

        public ZhangPhilGifView(Context context, AttributeSet attrs) {  
            super(context, attrs);  
            mMovie = Movie.decodeStream(getResources().openRawResource(R.drawable.animation));  
        }  

        @Override  
        public void onDraw(Canvas canvas) {  

            long now = android.os.SystemClock.uptimeMillis();  

            if (mMovieStart == 0) {  
                mMovieStart = now;  
            }  

            if (mMovie != null) {  
                int dur = mMovie.duration();  

                if (dur == 0) {  
                    dur = 1000;  
                }  

                int relTime = (int) ((now - mMovieStart) % dur);  
                mMovie.setTime(relTime);  
                mMovie.draw(canvas, 0, 0);  

                invalidate();  
            }  
        }  
    }

使用時候,直接將其作爲一個Android普通的view使用即可,但需要在構造函數時候寫進一個擬打算加載的gif資源文件id。比如drawable目錄下面的animation.gif文件,其id爲:R.drawable.animation

附錄文章:

《基於開源框架Glide加載Gif資源圖到Android ImageView中》鏈接地址:http://blog.csdn.net/zhangphil/article/details/45561983

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章