在安卓中从assets文件夹打开文件

15
我有一个.gif文件存放在assets文件夹中的路径是assets/Files/android.gif。当我尝试打开这个文件时,代码执行到第二行会抛出异常。
AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");

所以,是不是我尝试打开一个图像文件,尽管同样的代码在我尝试打开文本文件时是可行的?这里可能出了什么问题。

6个回答

31

这些代码行完美运行--

InputStream assetInStream=null;

try {
    assetInStream=getAssets().open("icon.png");
    Bitmap bit=BitmapFactory.decodeStream(assetInStream);
    img.setImageBitmap(bit);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if(assetInStream!=null)
    assetInStream.close();
}

如果您的图像非常大,则应在将其解码为位图之前对其进行缩放。请参见如何高效显示大图像


3
AFIK流在使用后应该关闭。 - ruX

4

我猜您可能会收到关于未处理的异常类型IOException的投诉。如果是这样,您需要将调用mgr.open的代码放在try-catch块中,以处理检索InputStream对象时可能发生的异常。

AssetManager mngr = getAssets();
try {
    InputStream is2 = mngr.open("Files/android.gif");
} catch (final IOException e) {
    e.printStackTrace();
}

1

不知道事情是否有所改变,但我在Android 1.1中有一个应用程序,它打开图标以在视图中显示它们,我是这样做的:

BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
Bitmap bitmap = BitmapFactory.decodeStream(buf);

1

我相信最好的方法是将您的图像放在res/drawable目录中。然后,您可以像这样获取Drawable:

Drawable d = Resources.getSystem().getDrawable(R.drawable.android);

0

0

我认为 Android 并不自动支持 gif 格式。建议使用相同代码的 png 或 jpg 格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接