为 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");
));
目前我在 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");
));