为 R.drawable 设置变量

Set variable for R.drawable

目前我在 android 上为 google 地图设置了标记图像,如下所示:

.icon(BitmapDescriptorFactory.fromResource(R.drawable.mon1))

其中 mon1 是可绘制文件夹中名为 mon1.png 的图像对应的名称。

我怎样才能这样做:

 String imagename="blablaimage";

.icon(BitmapDescriptorFactory.fromResource(R.drawable.imagename))

如果您点击 R.drawable.mon1,您将在 R.java class 中找到一个名为 mon1 的 int 声明。驻留在 R class 中的所有内容基本上都是一个整数。也就是说,您不能将变量 imagename 声明为 String 开头。必须是整数。

R.java class 中生成的所有内容都是由 Android 本身自动生成的。一旦您将一些资源放在适当的目录中,R.java 会在其中生成相应的资源 int,以便可以从 Java-end.

调用它

最重要的是,如果您的可绘制对象中某处有一个名为 blablaimage 的图像,您可以(最多)这样做,

int imagename= R.drawable.blablaimage;

.icon(BitmapDescriptorFactory.fromResource(imagename))

无法按照您的建议执行。

相反,可能的解决方法是使用以下函数:

public int getDrawableId(String name){
        try {
            Field fld = R.drawable.class.getField(name);
            return fld.getInt(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

并像这样使用:

 String imagename="blablaimage";

.icon(BitmapDescriptorFactory.fromResource(getDrawableId(imagename)));

使用Resources.getIdentifier的另一种可能性:

.icon(BitmapDescriptorFactory.fromResource(
   context.getResources().getIdentifier(imagename, "drawable", "com.mypackage.myapp"); 
));