资源定位

http://stackoverflow.com/questions/6517151/how-does-the-mapping-between-android-resources-and-resources-id-work
Android 程序可以方便的通过R.id.xxxxxx 来定位资源
Android 通过aapt工具将资源打包成了二进制,那么这个映射逻辑是如何工作的。

比如: 在 layout1.xml  加入button

<Button android:id="@+id/button1" >

AAPT会在对应的 R.java中生成id

public static final int button1=0x7f05000b;

在代码中我们可以这样调用

findViewById(R.id.button1);
这个机制是如何工作的?
--------------------------------------分割线---------------------------------------------
编译阶段:
打包工具AAPT收集资源文件,并给他们赋予一个ID
ID的组成:
资源ID是一个32bit的数字,格式为PPTTNNNN,PP是包,TT是资源的类型,NNNN标识在该类中的标识,在应用程序中PP是一个固定的值:0x7f
举例:
layout/main.xml
drawable/icon.xml
layout/listitem.xml

首先类型是layout,给TT赋值为:0x03,然后是第一个元素给NNNN为0000,最终id为:0x7f030000

接下来类型是drawable,给TT赋值为:0x02,第一个元素给NNNN是0000,最终id为0x7f020000

最后,我们看到另外一个layout,TT= 0x03,NNNN = 00001,所以最终id为0x7f0300001

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值