Android根據圖片的名字獲取對應的資源ID
阿新 • • 發佈:2018-12-19
最近在做專案時遇到這樣一個問題,需要通過圖片的名字(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; } }