Android加载Gif图片的一般方法:Movie实现

来源:互联网 发布:网络订餐食品安全现状 编辑:程序博客网 时间:2024/05/01 15:32

版权声明:本文为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

0 0
原创粉丝点击