【发布时间】:2013-04-30 14:13:25
【问题描述】:
我找到了有关如何在 android 中通过从资产中读取动画 gif 或使用可绘制对象来播放动画 gif 的教程。但我想要的是从 sdcard 读取 gif 文件。 我已经稍微改变了从资产中读取 gif 的项目。
在主要活动中,我基本上创建 gifMovieView 然后 setContent(gifMovieView) 在 GifMovieView 类的构造函数中,我像在项目“eu.andlabs.tutorial.animatedgifs”中一样初始化了电影对象。但我使用 decodeFile 提供文件路径而不是 decodeStream 获取 inputStream。
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 导致错误。
有什么建议吗?
提前谢谢你
【问题讨论】: