动态处理图像资源

时间:2012-07-06 10:16:03

标签: android dynamic bitmap

我想动态更改位图的图像资源。但是我不能用抽象类中的名字来称呼它们。

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

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

EDITED

我想我应该更清楚。我将我的图像存储在drawable文件夹下,然后将它们分成其他文件夹。

例如;

drawable / imageset1,drawable / imageset2,

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

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

5 个答案:

答案 0 :(得分:2)

我希望这会做你想做的事情

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

编辑:

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

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

正如这些链接描述

How to access res/drawable/"folder"

Can the Android drawable directory contain subdirectories?

答案 1 :(得分: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]
}

答案 2 :(得分:0)

它是存储在drawables文件夹中的资源吗?然后从BitmapFactory

尝试此方法
public static Bitmap decodeResource (Resources res, int id)

哪里

res = getResources()

和id是可绘制的id,如

R.drawable.picture

查看here

答案 3 :(得分:0)

你不能这样做。你必须在drawable&amp;中添加所有图像。像

一样使用它

myImage.setBackgroundResource(R.drawable.imageName)

或从网上下载图片后,您可以申请

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

获取位于InputStream

的位图

答案 4 :(得分: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);