资源定位
2015-11-09 11:47
399 查看
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
AAPT会在对应的 R.java中生成id
在代码中我们可以这样调用
这个机制是如何工作的?
--------------------------------------分割线---------------------------------------------
编译阶段:
打包工具AAPT收集资源文件,并给他们赋予一个ID
ID的组成:
资源ID是一个32bit的数字,格式为PPTTNNNN,PP是包,TT是资源的类型,NNNN标识在该类中的标识,在应用程序中PP是一个固定的值:0x7f
举例:
首先类型是layout,给TT赋值为:0x03,然后是第一个元素给NNNN为0000,最终id为:0x7f030000
接下来类型是drawable,给TT赋值为:0x02,第一个元素给NNNN是0000,最终id为0x7f020000
最后,我们看到另外一个layout,TT= 0x03,NNNN = 00001,所以最终id为0x7f0300001
Android 程序可以方便的通过R.id.xxxxxx 来定位资源
Android 通过aapt工具将资源打包成了二进制,那么这个映射逻辑是如何工作的。
比如: 在 layout1.xml 加入button
[code]<Button android:id="@+id/button1" >
AAPT会在对应的 R.java中生成id
[code]public static final int button1=0x7f05000b;
在代码中我们可以这样调用
[code]findViewById(R.id.button1);
这个机制是如何工作的?
--------------------------------------分割线---------------------------------------------
编译阶段:
打包工具AAPT收集资源文件,并给他们赋予一个ID
ID的组成:
资源ID是一个32bit的数字,格式为PPTTNNNN,PP是包,TT是资源的类型,NNNN标识在该类中的标识,在应用程序中PP是一个固定的值:0x7f
举例:
[code]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
相关文章推荐
- 一些CSS技巧
- Java Code To Byte Code
- ArrayList.add()添加重复元素
- swift 对象方法
- swift 对象方法
- SSL自签署证书生成脚本
- 进程调度模拟
- mysql show status 解释
- 一个陌生的iphone用户手机拿来了,需要跑一个调试程序步骤
- SQL 查询
- (四期)简单添加TableViewCell的3D动画效果
- Java API ——Character类
- GTK重拾--02
- WM_NCCALCSIZE消息处理详解修正
- MFC学习笔记之——>MFC下的TCP通信的建立
- MFC学习笔记之——>MFC下的TCP通信的建立
- 深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制
- iOS开发 - Xcode7下解决使用三方库出现的warning问题
- QQ分享登陆报错
- (三期)Hybrid混合开发之Appcan技术