Android根據字符串型的資源名獲取對應資源id


有時候我們想動態的根據一個字符串資源名獲得到對應的資源id,如根據不同的圖片名稱獲得對應的圖片,此時就應該考慮如何實現.

大家知道,在編譯Android工程時,系統會自動生成一個靜態資源類R,里面根據不同的資源類型有不同的靜態內部類,如id,drawable等等,而每個內部類中存放的是對應的16進制的靜態資源id屬性,而這些屬性的屬性名就是資源名.常用的方法有兩個:

方法一:

利用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; } }

PS:根據資源id獲取資源名稱:

String resName = getResources().getResourceName(resId);

 

作者: caobotao
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM