我必须在ImageView上绘制位于asstes / images上的图像。 首先,我将所有文件保存在String数组的assets / images文件夹中。
try {
String [] immages = assetManager.list("images");
} catch (IOException e1) {
e1.printStackTrace();
}
使用Log.d我可以看到所有图像都被正确扫描。 然后我有这个方法返回一个将在ImageView上设置的Bitmap
private Bitmap readImg()
{
InputStream inputStreamImages = null;
Resources res = getResources();
Bitmap bmp= null;
try {
inputStreamImages = assetManager.open(images[Integer.parseInt(number) - 1]);
bmp = BitmapFactory.decodeStream(inputStreamImages);
} catch(IOException e1) {e1.printStackTrace();}
return bmp;
}
但是我做了另一种方法,因为那个方法没有用。
private Drawable readImg2()
{
Drawable d= null;
try {
InputStream inputStreamImages = getAssets().open(images[Integer.parseInt(number) - 1]);
d = Drawable.createFromStream(inputStreamImages, null);
}catch(IOException e1) {e1.printStackTrace();}
return d;
}
非常相似,但都抛出相同的错误:
java.io.FileNotFoundException:v2.jpg
任何人都可以帮助我吗?谢谢; D
答案 0 :(得分:1)
images
数组仅包含具有扩展名的图像名称而不是包含文件可用目录的图像名称,因此在传递给images
方法时添加assetManager.open
作为前缀:
InputStream inputStreamImages =
assetManager.open("images/"+images[Integer.parseInt(number) - 1]);