在Android中将图片加载到ImageView中

5
在我的应用程序中,有一些图片,例如temp1.jpg、temp2.jpg等,一直到temp35.jpg。因此,在点击按钮时,我想逐个加载图像到ImageView中。我想要这样做:

cnt=1;
imagename="temp" + cnt + ".jpg";
cnt++;

因此,我的困惑是:“是否有任何方法可以从字符串(imagename变量)中加载图像到ImageView中,例如temp1.jpg等?”
5个回答

4
你可以尝试这个方法:
int cnt = 1;
//Bitmap bitmap = BitmapFactory.decodeFile("temp" + cnt + ".jpg");
int imageResource = getResources().getIdentifier("drawable/temp" + cnt + ".jpg", null, getPackageName());
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), imageResource);
imageView.setImageBitmap(bitmap);
cnt++;

希望这正是您所寻找的。

抱歉,它不起作用了...ImageView 只显示空白屏幕,没有图像。 - Paresh Mayani
你确定你提供了正确的图像路径吗?这些图像在SD卡上吗? - xil3
你能否也发布你的ImageView(XML格式,或者如果你是在代码中声明的话)? - xil3
我该如何获取我的图像文件路径...我的图像存储在/res/drawable文件夹中..所以可能我给出了错误的路径..请告诉我关于我的图像路径的信息.. - Paresh Mayani
那你为什么要使用decodeResource()方法呢?我不明白。 而且,你可以直接将图片设置到ImageView中: imageView.setImageResource(imageResource); - Paresh Mayani
是的,您可以直接将图像设置为资源,但如果将其解码为位图,则会给您带来更多的功能。如果以后您想要缩放图像(如果它太大),则可以在将其传递给imageView之前使用原始位图进行操作。这只是一种选择 - 如果您从未需要修改图像(出于任何原因),那么直接传递它就可以正常工作。 - xil3

3
为什么不使用类似于以下的内容:
File f = new File(PathToFiles + "/temp" + cnt + ".jpg");
if (f.exists()) {
  Drawable d = Drawable.createFromPath(f);
  imageview.setImageDrawable(d);
}

3
我实现了以下解决方案,对我来说它是有效的:
while(cnt!=n)
{
 String icon="temp" + cnt;
 int resID =
 getResources().getIdentifier(icon,"drawable","testing.Image_Demo");
 imageView.setImageResource(resID);
 cnt++; 
}

1

我不确定这是否是最佳解决方案,但您可以创建一个哈希表,将图像名称映射到资源。

Hashtable map;
map.put("temp1", R.drawable.temp1) // assuming temp1.jpg is in /drawable

然后您可以从可绘制资源加载ImageView。

 String imageName = "temp" + n;
 Drawable d = getResources().getDrawable((int)map[imageName]);
 ImageView i = new ImageView(this);
 i.setImageResource(d);

这就是为什么我写道这不是最好的解决方案。虽然,您可以使用Reflections来读取公共字段并自动加载哈希映射。想一想,您可以使用Reflections仅获取ID并忘记地图。 - Itsik

0

这对我有效:

Bitmap myBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.my_image)
.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(myBitmap);
// etc.  ....... 

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