Android显示gif格式图片

jopen 11年前

大家知道,在Android中使用ImageView来显示gif格式的图片,我们无法得到gif格式图片该有的效果,它只会停在第一帧上,而不会继续。这时只能看到一张静态的图片,这里我们可以使用个简单的方法,即是使用Movie来显示图片。

1.在main.xml中添加ImageView,指定一张GIF图片为背景;

2.MainActivity.java

package com.yin.displayGIF;     import android.app.Activity;  import android.content.Context;  import android.graphics.Canvas;  import android.graphics.Movie;  import android.os.Bundle;  import android.view.View;     public class MainActivity extends Activity {      private MyCustomView mView;      private Movie mMovie;      private long mMovieStart;         public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          mView = new MyCustomView(this);          setContentView(mView);      }         // 自定义一个类,继承View      class MyCustomView extends View {          public MyCustomView(Context context) {              super(context);              // 以文件流的方式读取文件              mMovie = Movie.decodeStream(getResources().openRawResource(                      R.drawable.my_picture));          }             @Override          protected void onDraw(Canvas canvas) {              long curTime = android.os.SystemClock.uptimeMillis();              // 第一次播放              if (mMovieStart == 0) {                  mMovieStart = curTime;              }                 if (mMovie != null) {                  int duration = mMovie.duration();                     int relTime = (int) ((curTime - mMovieStart) % duration);                  mMovie.setTime(relTime);                  mMovie.draw(canvas, 0, 0);                     // 强制重绘                  invalidate();              }              super.onDraw(canvas);          }      }  }