大家知道,在Android中使用ImageView来显示gif格式的图片,我们无法得到gif格式图片该有的效果,它只会停在第一帧上,而不会继续。这时只能看到一张静态的图片,这里我们可以使用个简单的方法,即是使用Movie来显示图片。
1.在main.xml中添加ImageView,指定一张GIF图片为背景;
2.MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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); } } } |