如何获取图像的资源ID,如果我知道它的名字?如何获取图像的资源ID,如果我知道它的名字?(How d

2019-05-10 12:25发布

如何获取图像的资源ID,如果我知道它的名字(在Android设备)?

Answer 1:

像这样的东西:

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


Answer 2:

你也可以试试这个:

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倍()。 我还发现它更方便和易于使用。 希望它可以帮助你。

链接: 在Android中动态检索资源



Answer 3:

您可以使用此功能来获取资源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)
    } 
}


所以,如果你想获得的可绘制资源ID,你可以这样调用方法:

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

(或从一个片段):

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


字符串资源ID,你可以这样调用:

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

等等...


小心 :如果无法找到资源ID,则抛出一个RuntimeException。 一定要在生产中正确恢复。

读这个



Answer 4:

例如,用于公共系统资源:

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

另一种方式是指在文档android.R.drawable类。



Answer 5:

这是我遇到的另外一个场景。

字符串imageName =“你好”,然后当它传递到则getIdentifier功能第一个参数,它会通过用绳子空终止的名字,将永远返回零。 通过此imageName.substring(0,imageName.length() - 1)



文章来源: How do I get the resource id of an image if I know its name?