我将图像存储在assets/img/categories文件夹中,并尝试使用以下代码加载它们:
ImageLoader.getInstance().displayImage(String.format("file:///android_asset/img/categories/%d.JPG", category.getId()), mImageIv);它看起来还可以,但不起作用:
E/ImageLoader(28790): /android_asset/img/categories/9.JPG: open failed: ENOENT (No such file or directory)
E/ImageLoader(28790): java.io.FileNotFoundException: /android_asset/img/categories/9.JPG: open failed: ENOENT (No such file or directory)为什么它不起作用?
发布于 2014-05-30 20:51:08
我认为assests文件夹的URI用法如下所示
String imageUri = "assets://image.png";
imageLoader.displayImage(imageUri, imageView);只需检查this引用
因此,您可以像这样更改代码
ImageLoader.getInstance().displayImage(String.format("assets:///img/categories/%d.JPG", category.getId()), mImageIv);或者甚至像这样从SDCard加载它
String imageUri = "file:///mnt/sdcard/image.png"; 如果有效,请让我知道
发布于 2014-05-30 20:42:14
file:///android_asset仅与WebView一起使用。
我不知道ImageLoader是什么,但看看它是否接受InputStream。如果是,请使用AssetManager和open()获取所需资产的InputStream。
发布于 2015-04-25 14:45:56
这是一个(简化的!)帮助器例程,如果URI使用file:///android_asset/模式,则会将资产作为InputStream打开:
public static InputStream open(String urlString, Context context) throws IOException {
URI uri = URI.create(urlString);
if (uri.getScheme().equals("file") && uri.getPath().startsWith("/android_asset/")) {
String path = uri.getPath().replace("/android_asset/", ""); // TODO: should be at start only
return context.getAssets().open(path);
} else {
return uri.toURL().openStream();
}
}用法如下:
InputSteam is = Helper.open("file:///android_asset/img/categories/001.JPG", this); // "this" is an Activity, for example未显示:异常处理。
https://stackoverflow.com/questions/23954878
复制相似问题