我想动态更改位图的图像资源。但是我不能用抽象类中的名字来称呼它们。
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.getImage(foldername + "/" + imagename));
我需要做类似的事情,但我找不到正确的方法。
EDITED
我想我应该更清楚。我将我的图像存储在drawable文件夹下,然后将它们分成其他文件夹。
例如;
drawable / imageset1,drawable / imageset2,
我想根据用户输入更改位图的图像资源。
例如: 用户从第一个微调器中选择imageset5,并从另一个微调器中选择image5.png。
答案 0 :(得分:2)
我希望这会做你想做的事情
BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(foldername + "/" + imagename , "drawable", getPackageName());
编辑:
虽然上面的代码只有当你遵循不允许在drawable文件夹中的子目录的android规则时才能工作,所以上面的代码只有在直接从drawable访问图像时才能工作。
BitmapFactory.decodeResource(getResources(), getResources().getIdentifier( imagename , "drawable", getPackageName());
正如这些链接描述
答案 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)
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);