将resourceId分配给Android中的Layout

时间:2016-05-31 12:25:01

标签: android android-layout android-studio android-resources

我知道以下事情。

  

资源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。任何人都可以给我建议或知识。 ?

2 个答案:

答案 0 :(得分:5)

21317552240x7F1000D8

的十进制表示形式

在您共享的代码中,开发人员决定硬编码十进制数而不是使用十六进制格式。但是,两者具有相同的值并且指向相同的resourceID。

您可以选择使用21317552240x7F1000D8

在R.java中,您可以找到十六进制格式的ID。

答案 1 :(得分:3)

这些大数字只是格式0x7f..的数字的十进制表示(顺便说一下,它是十六进制的)。

 long n = 2131755224;
 System.out.println(Long.toHexString(n));  

输出:7f1000d8

2131755224 == 0x7F1000D8将返回true