android文件中每个文件都有一个ID,如下图所示,左边的0x7f060000即是文件的ID:
如果我们想在代码中获取这个文件的ID应该使用高效率的反射机制,可以新建一个Java类代码如下:
1 2 3 4 5 6 7 8 9 10 11 |
public class ResourceMan { public static int getResId(String variableName, Class<?> c) { try { Field idField = c.getDeclaredField(variableName); return idField.getInt(idField); } catch (Exception e) { e.printStackTrace(); return -1; } } } |
或者在当前类增加一个方法:
1 2 3 4 5 6 7 8 9 |
public static int getResId(String variableName, Class<?> c) { try { Field idField = c.getDeclaredField(variableName); return idField.getInt(idField); } catch (Exception e) { e.printStackTrace(); return -1; } } |
调用方式:
其中icon是文件名称,不需要增加后缀
1 2 |
int id = ResourceMan.getResId("icon",R.drawable.class); //或者int id = getResId("icon",R.drawable.class); |