我发现了一些关于如何在Android中播放动画gif的教程,其中包括从资源文件或使用drawable对象读取。但是我想要的是从SD卡中读取gif文件。
我已经对读取来自assets的gif的项目进行了一些更改。
在主活动中,我基本上创建了gifMovieView,然后设置内容(gifMovieView)。 在GifMovieView类的构造函数中,我像“eu.andlabs.tutorial.animatedgifs”项目中那样初始化了Movie对象。但是,我使用的是decodeFile方法,给出文件路径,而不是获取inputStream的decodeStream方法。
我已经为这行代码抛出了I/O异常。它找到了文件,但是decodeFile却抛出了异常。
在onDraw方法中;
由于异常,movie.duration变成了0导致错误。
有什么建议吗?
提前感谢您。 https://gist.github.com/beyzakokcan/5488897/raw/e9c2afbf941d06ed0f1d3b75dc3d100ff9d7ee85/GifMovieView.java
在主活动中,我基本上创建了gifMovieView,然后设置内容(gifMovieView)。 在GifMovieView类的构造函数中,我像“eu.andlabs.tutorial.animatedgifs”项目中那样初始化了Movie对象。但是,我使用的是decodeFile方法,给出文件路径,而不是获取inputStream的decodeStream方法。
File file = new File (Environment.getExternalStorageDirectory().getAbsolutePath(),"piggy.gif");
if(file.exists()){
mMovie = Movie.decodeFile(file.getPath());
}
我已经为这行代码抛出了I/O异常。它找到了文件,但是decodeFile却抛出了异常。
在onDraw方法中;
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
super.onDraw(canvas);
final long now = SystemClock.uptimeMillis();
if (mMoviestart == 0) {
mMoviestart = now;
}
Log.i("",""+mMovie.duration());
Log.i("",""+mMoviestart);
final int relTime = (int)((now - mMoviestart) % mMovie.duration());
mMovie.setTime(relTime);
mMovie.draw(canvas, 10, 10);
this.invalidate();
}
由于异常,movie.duration变成了0导致错误。
有什么建议吗?
提前感谢您。 https://gist.github.com/beyzakokcan/5488897/raw/e9c2afbf941d06ed0f1d3b75dc3d100ff9d7ee85/GifMovieView.java