1

为了创建一个瓷砖管理系统,我的 res/drawable 目录中有一组图像。如何动态加载该资源?

喜欢 :F_16.0_0_112.jpg. ("F_"+zoom"+"._"+XCoord+"_"+YCoord".jpg")

是否有类似 getDrawable(String) 的功能?

4

4 回答 4

5

您可以通过以下方式使用其名称获取可绘制对象:

int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
于 2012-11-07T09:32:30.497 回答
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;
}
于 2012-11-07T09:38:00.157 回答
1

不,为此使用 android assets文件夹。

在此处查看更多详细信息。

于 2012-11-07T09:32:37.433 回答
-1

不幸的是,您不能按名称加载资源。id 是生成的 R 类中的变量。在java中,你不能建立动态变量名。

于 2012-11-07T09:32:49.203 回答