博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Android中根据ID名动态获取资源的两个方法
阅读量:5835 次
发布时间:2019-06-18

本文共 1899 字,大约阅读时间需要 6 分钟。

在开发中, 我们习惯了类似下面这种方式去实现引用资源:context.getResources().getDrawable(R.drawable.flower);但是,当我们提前知道这个资源的id,想动态去引用,而不是在id里面固化应该怎么办呢? 比如某个图片资源的id是R.drawable.test_1, 而且有序的还有test_2,test_3, 我们如何动态的去引用它们?这里有两种方案:直接用反射和用resource的getIdentifier()方法,它们原理都差不多利用反射实现.第一种方法:    /**         * 输入id,返回Bitmap         * @param context         * @param id         * @return         */        public static Bitmap getBitMapById(Context context,String id){            Bitmap mBitmap=BitmapFactory.decodeResource(context.getResources(),getresourceId("test_"+id));            return mBitmap;        }                public static int getresourceId(String name){            Field field;            try {                field = R.drawable.class.getField(name);                return Integer.parseInt(field.get(null).toString());            } catch (NoSuchFieldException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (NumberFormatException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IllegalArgumentException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IllegalAccessException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            return 0;        }第二种方法(更加简洁):    public static Bitmap getBitmapById(Context context,String id){            Resources res = context.getResources();            Bitmap mBitmap=BitmapFactory.decodeResource(res, res.getIdentifier(id, "drawable", "com.test.android"));            return mBitmap;        }第二种方法中res.getIdentifier()里面三个参数: 第一个是资源id名,第二个是类名,如果是string类型就是String,还有常见的drawable,layout等等,第三个参数是项目包名.上面2种方法都能动态获取资源,当我们知道某些资源的id是规律性的,比如前缀相同,后缀都是a-z 或者数字排序等等,就能动态构造id获取资源,而不必每次都写context.getResources().getDrawable(R.drawable.test_1);希望对大家有帮助.

 

转载地址:http://nvucx.baihongyu.com/

你可能感兴趣的文章
QQ悬浮返回顶部
查看>>
weblogic 9.2部署CXF Service应用
查看>>
MySQL建表语句的一些特殊字段
查看>>
DeDe调用指定栏目ID下的文章
查看>>
《Unix环境高级编程》读书笔记 第8章-进程控制
查看>>
腾讯前端二面题目详解
查看>>
mascara-1
查看>>
C#中Time
查看>>
IBM Cloud Speech to Text 语音识别
查看>>
Jquery Form表单取值
查看>>
【cocos2d-js官方文档】十二、对象缓冲池
查看>>
php分页
查看>>
Python version 2.7 required, which was not found in the registry
查看>>
Android API level 与version对应关系
查看>>
[实战演练]Intel面试题目 - 进栈出栈顺序问题
查看>>
Team Name
查看>>
String类
查看>>
JAVA中各种日期表示字母
查看>>
结对编程2
查看>>
颤抖吧,Css3
查看>>