我有一个显示 GIF 图像的应用程序。如果图像保存在可绘制的文件中,一切正常,我像这样访问它
is=context.getResources().openRawResource(R.drawable.mygif);
movie = Movie.decodeStream(is);
但我需要从互联网下载图像,所以我将其保存到 CacheDir,效果很好。我尝试了以下方法来阅读它。
try
{
is = new BufferedInputStream(new FileInputStream(new File(context.getCacheDir(), "mygif.gif")));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
movie = Movie.decodeStream(is);
And this
movie = Movie.decodeFile(new File(context.getCacheDir(), "mygif.gif").getPath());
但无论如何,结局都是这样的
java.io.IOException
at java.io.InputStream.reset(InputStream.java:218)
at android.graphics.Movie.decodeStream(Native Method)
at android.graphics.Movie.decodeTempStream(Movie.java:74)
at android.graphics.Movie.decodeFile(Movie.java:59)
or
java.io.IOException: Mark has been invalidated.
at java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
at android.graphics.Movie.decodeStream(Native Method)
我认为这是一个非常简单的错误,但我无法克服它。清单有:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>