为了创建一个瓷砖管理系统,我的 res/drawable 目录中有一组图像。如何动态加载该资源?
喜欢 :F_16.0_0_112.jpg. ("F_"+zoom"+"._"+XCoord+"_"+YCoord".jpg")
是否有类似 getDrawable(String) 的功能?
您可以通过以下方式使用其名称获取可绘制对象:
int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
您可以使用反射来获得它(不要忘记导入 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;
}
不,为此使用 android assets文件夹。
请在此处查看更多详细信息。
不幸的是,您不能按名称加载资源。id 是生成的 R 类中的变量。在java中,你不能建立动态变量名。