Android Java,来自资源的位图

bun*_*r89 2 android

我在res/drawable文件夹中有我的图像,没有问题.问题是,我希望能够做到这样的事情:

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.*img[contar]*);
Run Code Online (Sandbox Code Playgroud)

换句话说,eclipse不允许我这样做img[contar]它只接受图像文件的特定名称(例如:crystalblue),我想让我们说从"crystalblue"转移到"crystalred"图像,在我的情况下我需要一个变量来做到这一点.

Obs:我确实将img声明为字符串数组.

任何解决方案?

Chr*_*ris 6

你不能将变量名的一半与运行时数据连接起来.编译器无法判断您实际尝试传递的变量.

你要做的是这样的事情:

int resourceId = 0;
if(someCondition){
  resourceId = R.drawable.someimage;
}else{
  //other logic for picking the right image here
}

mBitmap = BitmapFactory.decodeResource(getResources(), resourceId);
Run Code Online (Sandbox Code Playgroud)

您还可以使用反射来查找R类中具有与字符串数组中的值匹配的名称的字段,然后对其执行"get"调用以填充resourceId:

Class rClass = R.drawable.class;
Field resourceConstant =rClass.getField(img[contar]);       
int resourceId = resourceConstant.getInt(null); //since it's a static field, pass null here
mBitmap = BitmapFactory.decodeResource(getResources(), resourceId);
Run Code Online (Sandbox Code Playgroud)