Android的神奇之处在于只通过R.id.XXX找到合适的资源.
AFAIK,资源被编译成二进制格式,那么这个映射逻辑如何在底层工作呢?
也许它的工作原理如下:
例如,在layout1.xml中,我们得到:
<Button android:id="@+id/button1" >
Run Code Online (Sandbox Code Playgroud)
和AAPT将在R.java中生成:
public static final int button1=0x7f05000b;
Run Code Online (Sandbox Code Playgroud)
当生成*.apk时,@ + id/button1将替换为"0x7f05000b".
因此,当我们打电话时:
findViewById(R.id.button1);
Run Code Online (Sandbox Code Playgroud)
我们基本上仍然根据ID进行搜索,尽管ID是一个像0x7f05000b的数字.
谢谢!
我真正想知道的是,如何将资源id整数解析为资源内容?换句话说,Android运行时如何以资源ID作为唯一线索来定位资源内容?
例如,如何找到具有资源ID的可绘制图片?或者如何找到具有资源ID的字符串值?
有没有人知道关于resource-id和R.java的内部结构,或者至少可以引用我来阅读更多关于它的内容?
resource-id的含义是什么?他们是apk中的某种地址吗?他们在编译的apk中保存在哪里?
我尝试了一些关于它的信息,但我得到的大部分内容都是导入它的问题以及它的作用和一般情况.