Android通过反射动态获取资源Id
16lz
2021-01-26
打jar包的时候,你会发现R文件中的资源不能访问因此,需要通过反射动态获取资源的id
/** * 反射得到组件的id号 * @param packageName 包名 * @param className layout,string,drawable,style,id,color,array * @param idName 唯一文件名 * @return 资源id */ public static int getCompentID(String packageName, String className, String idName) { int id = 0; try { Class<?> cls = Class.forName(packageName + ".R$" + className); id = cls.getField(idName).getInt(cls); } catch (Exception e) { Log.e("Error", "缺少" + idName + "文件!"); e.printStackTrace(); } return id; }
示范(获取图片)
ImageView iv = (ImageView) findViewById(R.id.imageView1); int id = getCompentID("in.srain.cube.views.ptr", "drawable", "head"); iv.setImageResource(id);
更多相关文章
- Android存储(四):读写SD卡的文件
- Android官方文档之App Resources(下)
- EditTextView:取消焦点&自动获取焦点
- ClassNotFoundException: Didn't find class "XXXView" on path:
- TransitionDrawable的简单替换图片
- 【Android】OkHttp系列(一):发送请求与获取响应流程概述
- Android访问资源
- android 5.0 以上获取栈顶应用包名以及程序锁的实现
- Android之获取屏幕的三种方式