最近在做项目时遇到这样一个问题,需要通过图片的名字(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,将会返回0return 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,将会返回0return 0;} catch (IllegalAccessException e) {return 0;}
}