<分区>
为什么,资源被转换成 HEXAdecimal,它是否为应用程序创建了对您的资源的一些快速访问。
<分区>
为什么,资源被转换成 HEXAdecimal,它是否为应用程序创建了对您的资源的一些快速访问。
最佳答案
R.java 只不过是一个类文件,它为项目中的每个资源提供一个静态常量。该常量是有效文件系统的索引号。因此 myicon.png 的文件编号为 12345。资源管理器使用此索引在运行时加载资源。打开它。看一看。
让我们看一个示例 R.java:
public final class R {
public static final class id {
public static final int myTextView=0x7f090008;
}
}
我可以使用以下方式引用 myTextview:
findViewById(R.id.myTextView) - constant
findViewById(0x7f090008) - hex
findViewById(2131296264) - decimal
findViewById(017702200010) - octal
findViewById(0b1111111000010010000000000001000) - binary
它们都是等价的。
同样,我可以像这样编写我的 R.java 文件:
public final class R {
public static final class id {
public static final int myTextView=0b1111111000010010000000000001000;
}
}
它仍然有效。
没有什么是“转换”的,您只是使用常量来引用索引号。编译器会处理它。您只是碰巧将其视为十六进制,但最终,就像您应用中的所有内容一样,它只是 1 和 0。
这样做的唯一原因是您可以使用常量。想象一下,如果您必须使用实际的索引值来维护您的代码,尤其是考虑到它们可能并且会在您每次重建 R.java 时发生变化。
索引号不是内存地址,也不是偏移量,也不是一种特殊的奶酪。它们只是由编译器生成的常量,使您能够使用人类友好的名称访问资源。
关于android - 为什么,android中的资源在R.java中被转换为HEXA-DECIMAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171028/