版權聲明:本文爲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