为了创建磁贴管理系统,我在res / drawable目录中有一包图像。如何动态加载该资源?
喜欢:F_16.0_0_112.jpg. ("F_"+zoom"+"._"+XCoord+"_"+YCoord".jpg")
是否有像getDrawable(String)这样的函数?
答案 0 :(得分:5)
您可以通过以下方式使用其名称获取drawable:
int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
答案 1 :(得分:2)
你可以使用反射(不要忘记导入java.lang.reflect.Field)
/**
* For example calling <code>getDrawableId("ic_launcher")</code> will return the same value as <code>R.drawable.ic_launcher;</code>
*
* @param name the name of the field
* @return the drawable id
*/
public int getDrawableId(String name) {
Class<?> c = R.drawable.class;
Field f = null;
int id = 0;
try {
f = R.drawable.class.getField(name);
id = f.getInt(null);
} catch (NoSuchFieldException e) {
Log.i("Reflection", "Missing drawable " + name);
} catch (IllegalAccessException e) {
Log.i("Reflection", "Illegal access to field " + name);
}
return id;
}
答案 2 :(得分:2)
答案 3 :(得分:1)
不,为此使用android 资产文件夹。
请参阅更多详情here。
答案 4 :(得分:-1)
不幸的是,您无法按名称加载资源。 id是生成的R类中的变量。在java中,您无法构建动态变量名。