首页 > 移动平台 > 详细

Android根据字符串型的资源名获取对应资源id

时间:2015-12-12 20:09:56      阅读:385      评论:0      收藏:0      [点我收藏+]

有时候我们想动态的根据一个字符串资源名获得到对应的资源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);

 

Android根据字符串型的资源名获取对应资源id

原文:http://www.cnblogs.com/caobotao/p/5041713.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!