有许多方法和库可以播放gif动画。我尝试了一些并且它们很好用。 问题是,最好的方法是什么?我认为,最好的方式是尽可能减少ram空间,不要在较旧的设备上进行帧到帧。
我有一个小而短的gif动画,它是海上的波浪,我想把它放在我的应用程序上。该应用程序在Android 2.2 +上运行。
你能给我最好的方法吗?
King Regards
答案 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。