Android显示gif格式图片

大家知道,在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, 00);
 
                // 强制重绘
                invalidate();
            }
            super.onDraw(canvas);
        }
    }
}

原文地址:https://www.cnblogs.com/lanzhi/p/6469896.html