如果我知道它的名字,我如何获得图像的资源ID?

时间:2010-06-15 06:24:04

标签: android android-image android-resources

如果我知道其名称(如在Android中),如何获取图像的资源ID?

5 个答案:

答案 0 :(得分:259)

有这样的事情:

String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

答案 1 :(得分:28)

你也可以试试这个:

try {
    Class res = R.drawable.class;
    Field field = res.getField("drawableName");
    int drawableId = field.getInt(null);
}
catch (Exception e) {
    Log.e("MyTag", "Failure to get drawable id.", e);
}

我从以下网址复制了此源代码。根据在此页面中完成的测试,它比getIdentifier()快5倍。我还发现它更方便易用。希望它也能帮到你。

链接: Dynamically Retrieving Resources in Android

答案 2 :(得分:10)

您可以使用此功能获取资源ID:

public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException {
    try {
        return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
    } catch (Exception e) {
        throw new RuntimeException("Error getting Resource ID.", e)
    } 
}


因此,如果您想获得 Drawable 资源ID,您可以像这样调用方法:

getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName());

(或从片段中):

getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName());


对于 String 资源ID,您可以这样调用它:

getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());

等...


小心:如果无法找到资源ID,则会抛出RuntimeException。务必在生产中正确恢复。

Read this

答案 3 :(得分:10)

公共系统资源的示例:

// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");

alert

另一种方法是引用android.R.drawable类的文档。

答案 4 :(得分:0)

我遇到的另一种情况。

String imageName =" Hello" 然后当它被传入 getIdentifier函数作为第一个参数,它将使用字符串null终止传递名称并始终返回零。 通过这个 imageName.substring(0,imageName.length() - 1)