学习Android利用反射获取资源文件
来源:互联网 发布:js判断对象是否为null 编辑:程序博客网 时间:2024/06/05 03:05
公司需要开发一款SDK,代码部分要做成jar文件,那么R文件就没办法引用啦。再也没办法愉快的使用findviewbyid(R.id.XX);获取控件了。去google了一下,发现大神们都可以用反射拿到res里面想要的一切资源。我就学来试用下。把下面的方法封装成一个类,直接用静态方法调用就可以拿到int型的资源引用了。
/** *code by xiaonan */public class ResUtil { public static int getLayoutId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString, "layout", paramContext.getPackageName()); } public static int getStringId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString, "string", paramContext.getPackageName()); } public static int getDrawableId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString, "drawable", paramContext.getPackageName()); } public static int getStyleId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString, "style", paramContext.getPackageName()); } public static int getId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString,"id", paramContext.getPackageName()); } public static int getColorId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString, "color", paramContext.getPackageName()); } public static int getArrayId(Context paramContext, String paramString) { return paramContext.getResources().getIdentifier(paramString, "array", paramContext.getPackageName()); } }
使用方法很简单。如果你有布局文件需要引用,那就直接使用ResUtil.getLayoutId(this,"activity_main");就可以拿到layout的布局引用了。如果你在布局里面做了一个TextView,那么你就可以这样操作这个控件。以下是一个简单的小栗子。
<TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />上面这是布局文件,在java文件里如果想操作控件就按照下面的方法使用就可以了
TextView tv = (TextView) findViewById(ResUtil.getId(this, "tv")); tv.setText("你就说6不6");用法很简单。实际上在getresources().getidentifier()方法中Google已经替我们做好了反射,我们只是利用了包名+资源名称获取到了资源的引用。这样获取控件可以很大程度上解决在jar包中无法引用res资源的问题。具体原理我也不太懂,我还是个菜鸟。但是这里先记录下使用方法。以后肯定也用的上。
1 0
- 学习Android利用反射获取资源文件
- 利用反射R文件,通过资源名称获取ID
- android反射获取资源
- Android利用资源名称获取其ID(二)--->反射
- Android中利用“反射”动态加载R文件中的资源
- 反射机制来获取资源文件/
- Android中通过反射获取资源Id
- Android中通过反射获取资源Id
- Android通过反射动态获取资源Id
- Android中通过反射获取资源Id
- Android反编译获取资源文件-android学习之旅(69)
- Android获取设备信息(利用反射)
- Android利用反射获取状态栏(StatusBar)高度
- Android利用反射获取WLAN热点信息
- Android利用反射获取状态栏(StatusBar)高度
- c#反射机制学习和利用反射获取类型信息
- android资源文件学习
- 利用反射 获取android布局文件中设置的属性值
- 用Docker来运行最新版的MySQL 以及 Docker 加速
- ROS视觉和图像-ROS和OpenCV图像转换桥梁cv_bridge
- Open Scene Graph 写出节点纹理丢失、纹理错乱问题
- 南阳oj 254 兔子的烦恼(一)
- Ubuntu 14.04安装teamviewer 远程桌面
- 学习Android利用反射获取资源文件
- Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
- 内核通知链原理及机制
- Ffmpeg框架结构解读
- iOS调试之 crash log分析
- 指针简介
- NDK编译基础示例
- iOS 目录详解
- 蔡勒公式(根据日期计算出周几)