如果我知道它的名字,我如何获得图像的资源ID?
如果我知道它的名字(在Android中),如何获取图像的资源ID?
有了这样的事情:
String mDrawableName = "myappicon"; int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
你也可以试试这个:
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); }
我已经从下面的URL复制这个源代码。 基于本页面所做的testing,它比getIdentifier()快5倍。 我也发现它更方便,易于使用。 希望它可以帮助你。
链接: 在Android中dynamic检索资源
你可以使用这个函数来获取一个资源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());
对于string资源ID,您可以像这样调用它:
getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());
等等…
小心 :如果无法find资源ID,则会引发RuntimeException。 一定要在生产中恢复正常。
读这个
公共系统资源的示例:
// this will get id for android.R.drawable.ic_dialog_alert int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");
另一种方法是引用android.R.drawable类的文档。
我遇到的另一种情况。
String imageName =“Hello”,然后当它传递给getIdentifier函数作为第一个参数时,它将通过名称与stringnull终止,并将始终返回零。 传这个imageName.substring(0,imageName.length() – 1)