1. 程式人生 > >Android根據圖片的名字獲取對應的資源ID

Android根據圖片的名字獲取對應的資源ID

最近在做專案時遇到這樣一個問題,需要通過圖片的名字(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;
    }
}