最近在做项目时遇到这样一个问题,需要通过图片的名字(example:main_pic.png)获取图片在R文件中的id(example:R.mipmap.main_pic或者R.drawable.main_pic),然后返回一个Drawable对象去设置控件背景。对此我也没什么思绪,于是乎去问了度娘,找到了一位前辈的博文https://www.cnblogs.com/caobotao/p/5041713.html,这里为了自己以后方便查找做下笔记。
方案一:
利用getResources().getIdentifier(String name,String defType,String defPackage) 获取
public int getResource(String imageName){
Context ctx=getBaseContext();
int resId = getResources().getIdentifier(imageName, "mipmap", ctx.getPackageName());
//如果没有在"mipmap"下找到imageName,将会返回0
return resId;
}
方案二:
使用反射机制获取
public int getResource(String imageName){
Class mipmap = R.mipmap.class;
try {
Field field = mipmap.getField(imageName);
int resId = field.getInt(imageName);
return resId;
} catch (NoSuchFieldException e) {
//如果没有在"mipmap"下找到imageName,将会返回0
return 0;
} catch (IllegalAccessException e) {
return 0;
}
}