android-播放gif动画的最佳方式

时间:2014-12-31 12:11:54

标签: android android-animation

有许多方法和库可以播放gif动画。我尝试了一些并且它们很好用。 问题是,最好的方法是什么?我认为,最好的方式是尽可能减少ram空间,不要在较旧的设备上进行帧到帧。

我有一个小而短的gif动画,它是海上的波浪,我想把它放在我的应用程序上。该应用程序在Android 2.2 +上运行。

你能给我最好的方法吗?

King Regards

1 个答案:

答案 0 :(得分:0)

使用以下代码在您的应用程序中播放gif:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;

public class GifActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new GifView(this));
    }

    static class GifView extends View {
        Movie movie;
        GifView(Context context) {
            super(context);
            File myFile = new File("/sdcard/test.gif");
            InputStream fis = null;
            try {
                fis = new BufferedInputStream(new FileInputStream(myFile),
                        16 * 1024);
                fis.mark(16 * 1024);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            movie = Movie.decodeStream(fis);
            Log.e("SS", "movie.duration()" + movie.duration());

        }

        @Override
        protected void onDraw(Canvas canvas) {
            try {
                if (movie != null) {
                    movie.setTime((int) SystemClock.uptimeMillis()
                            % movie.duration());
                    movie.draw(canvas, 0, 0);
                    invalidate();
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

        }
    }
}

它不需要任何第三方库在您的应用程序中播放gif。