0

我想动态更改位图的图像资源。但我不能用可绘制类中的名称来称呼它们。

bmp = BitmapFactory.decodeResource(getResources(), R.drawable.getImage(foldername + "/" + imagename));

我需要做类似的事情,但我找不到正确的方法。,

已编辑

我想我应该更清楚。我将我的图像存储在可绘制文件夹下,并将它们分隔到其他文件夹中。

例如;

可绘制/图像集1,可绘制/图像集2,

我想根据用户输入更改位图的图像资源。

例如:用户从第一个微调器中选择 imageset5,并从另一个微调器中选择 image5.png。

4

5 回答 5

2

我希望这会做你想要的

BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(foldername + "/" + imagename , "drawable", getPackageName());

编辑:

而上面的代码只有在你遵循不允许drawable文件夹中的子目录的android规则时才有效,所以上面的代码只有在直接从drawable访问图像时才有效。

BitmapFactory.decodeResource(getResources(), getResources().getIdentifier( imagename , "drawable", getPackageName());

正如这些链接所描述的

如何访问 res/drawable/“文件夹”

Android可绘制目录可以包含子目录吗?

于 2012-07-06T10:21:40.783 回答
0

你不能这样做。你必须在drawable中添加所有图像并像使用它一样使用它

myImage.setBackgroundResource(R.drawable.imageName)

或从网络下载图像后,您可以申请为

myImage.setBitmap(BitmapFactory.decodeStream(in));

获取位图在哪里InputStream

于 2012-07-06T10:21:29.127 回答
0

只需尝试以下操作:您的名为“imagename”的图像必须在文件夹中

String IMAGE_FOLDER_NAME = "YOUR_IMAGE_CONTAINING_FOLDER";

现在,使用以下代码:

String imagename = "YOUR_IMAGE_NAME";    
String PACKAGE_NAME=getApplicationContext().getPackageName();    
int imgId = getResources().getIdentifier(PACKAGE_NAME+":"+IMAGE_FOLDER_NAME+"/"+imagename , null, null);
System.out.println("IMG ID :: "+imgId);    //    check this in log
System.out.println("PACKAGE_NAME :: "+PACKAGE_NAME);    //    check this in log
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),imgId);
于 2012-07-06T11:04:56.160 回答
0

制作一组图片资源

int []a = int[]
{
   R.drawable.one,
   R.drawable.two,
   R.drawable.three,
   R.drawable.four,
};

然后循环访问

for(int i=0;i<a.length;i++)
{
   //  a[i]
}
于 2012-07-06T10:18:28.513 回答
0

它是存储在drawables文件夹中的资源吗?然后从 BitmapFactory 尝试这个方法

public static Bitmap decodeResource (Resources res, int id)

在哪里

res = getResources()

并且 id 是可绘制对象的 id

R.drawable.picture

在这里查看

于 2012-07-06T10:20:38.060 回答