アセットから読み取るか、描画可能なオブジェクトを使用して、Android でアニメーション GIF を再生する方法に関するチュートリアルを見つけました。しかし、私が欲しいのは、sdcard から gif ファイルを読み取ることです。アセットから gif を読み取るプロジェクトを少し変更しました。
メイン アクティビティでは、基本的に gifMovieView を作成してから setContent(gifMovieView) を作成します。GifMovieView クラスのコンストラクタで、プロジェクト「eu.andlabs.tutorial.animatedgifs」のように Movie オブジェクトを初期化しました。しかし、decodeStream が inputStream を取得する代わりに、decodeFile を使用してファイル パスを指定しました。
File file = new File (Environment.getExternalStorageDirectory().getAbsolutePath(),"piggy.gif");
if(file.exists()){
mMovie = Movie.decodeFile(file.getPath());
}
この行には I/O EXCEPTION を指定しました。ファイルは見つかりますが、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 になり、エラーが発生します。
助言がありますか?
前もって感謝します