我知道以下事情。
资源ID是32位数字格式:PPTTNNNN。 PP是 包的资源是用于; TT是资源的类型; NNNN是 该类型资源的名称。对于应用程序资源,PP 总是0x7f。
示例:
这些资源文件由aapt按此顺序处理:
layout/main.xml
drawable/icon.xml
layout/listitem.xml
我们看到的第一种类型是layout
,因此给出了TT == 1
。该类型下的第一个名称是" main"所以给出了NNNN == 1
。最终资源ID为0x7f010001
。
接下来,我们会看到drawable
,因此会TT == 2
。该类型的第一个名称是" icon"得到NNNN == 1
。最终资源ID为0x7f020001
。
最后我们看到另一个layout
与之前一样TT == 1
。这有一个新名称listitem
,以便获取下一个值NNNN == 2
。最终资源ID为0x7f010002
。
问题:
但是最近我看到一些布局文件是通过以下方式分配ID。
java代码
this.f5160k = (ImageView) findViewById(2131755224);
this.f5163n = findViewById(2131755219);
this.f5162m = (LinearLayout) findViewById(2131755223);
this.f5161l = (LinearLayout) findViewById(2131755220);
this.f5158i = (GridView) findViewById(2131755222);
正如我所知,第一部分this.f5160k
是Declartion,但这种格式是什么2131755224
。任何人都可以给我建议或知识。 ?
答案 0 :(得分:5)
2131755224
是0x7F1000D8
在您共享的代码中,开发人员决定硬编码十进制数而不是使用十六进制格式。但是,两者具有相同的值并且指向相同的resourceID。
您可以选择使用2131755224
或0x7F1000D8
。
在R.java中,您可以找到十六进制格式的ID。
答案 1 :(得分:3)
这些大数字只是格式0x7f..
的数字的十进制表示(顺便说一下,它是十六进制的)。
long n = 2131755224;
System.out.println(Long.toHexString(n));
输出:7f1000d8
2131755224 == 0x7F1000D8
将返回true
。