android 资源文字ids的作用
ids.xml——为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id引用到。若在ids.xml中定...
ids.xml——为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id引用到。
若在ids.xml中定义了ID,则在layout中可如下定义@id/price_edit,否则@+id/price_edit。
为什么使用ids?
我个人认为有以下几点作用:
(1)优化编译效率。
我们知道android的组件必须用一个int类型的id属性来标识其唯一性,id属性必须以@开头的值,例如,@id/abc、@+id/xyz等。
如果使用"@+id/name"形式,当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识。如果不存在该变量,则添加一个新的变量,并为该变量赋相应的值(不会重复)。
当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值,例如,@+id/xyz会在R.java文件中生成int xyz = value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。
使用@id/name形式,预先定义的id已经生成,修改配置文件时,也不会引起系统重新生成。
(2)统一管理资源Id。
public.xml——描述的是为attr、id、drawable所指定的一个32的id值,这个值在current.xml文件中会被用到。
当我们对public.xml做了改动后,执行make update-api命令,相应的current.xml就会添加这些改动。
在public.xml中资源数据的定义会影响到current.xml文件,它们分别在frameworks/asecoreesesvalues和framework/aseapicurrent.xml中。
当进行内核文件修改时,需要特别注意public.xml文件的同步,该文档定义了资源文件的二进制兼容性。因此需要小心对待该文件,否则可能会破坏该版本的向后兼容性。
为了避免破坏兼容性,新的资源需加在同类资源的最后(主要ID值,按照ID值递增)。若是放置在中间会导致随后的同类资源被赋予新的ID值从而破坏兼容性。
添加id的方法:
1)在ids.xml中添加公共id项,在public.xml中也添加相应的id项。这种办法没有兼容性,会与后面的版本产生冲突。
2)在ids.xml中添加公共id项,每一项前面加一行<!– @hide –>的注释,这样就不用在public.xml中添加相应的项了。源码中是的形式,这样current中就不会有相应的段了。
3)在自己写的xml中,使用android:id = “@+id/id_name”的形式,就和在eclipse中一样,搜一下会发现android源码中也有这么用的,这样ids.xml和public.xml都不用改,兼容性我还不确定。
其它常用的资源文件:
attrs.xml——当中定义的是类的属性,属性是为了能在xml文件中被引用到,换句话说就是指定类中变量(也就是属性的实际作用者)的值。这些属性会在类的构造函数中用到。看过一两个源码就会明白,构造函数中的TypedArray其实就是属性的数组,数组的成员会被赋给类里的成员,完成从xml的初始化。类的构造函数一般有三个,一个是Class(context),这个用于在代码中创建一个类,所以只包含一个上下文;Class(context,
attrs)和Class(context, attrs, defStyle)用于从xml创建类的情况。
styles.xml——当中是各个控件的“样式”,样式由一个个属性所组成。我们在编辑xml文件的时候,不同的类所能设置的属性有共同的,也有不同的,都是由样式来控制的。具体可以去看styles.xml这个文件的内容。
themes.xml其实也是样式,只是适用的范围大一点,这个我是参考网上别人的看法,自己还没研究过。
colors.xml——当中定义各种颜色值。
strings.xml——当中定义使用到的字符串常量。
android 资源文字ids的作用的更多相关文章
- Android 资源(resource详解(转)
本文介绍在Android开发中关于资源文件的存储操作.对于Android资源也是非常重要的,主要包括文本字符串(strings).颜色(colors).数组(arrays).动画(anim).布局(l ...
- Android资源文件简介
Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源 ...
- [转] Android资源管理框架(Asset Manager)简要介绍和学习计划
转自:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分内容组成:代码和资源.资源主要就是指那些与U ...
- Android资源管理框架(Asset Manager)简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...
- ANDROID资源文件【转】
1. 资源包括:文本字符串.图像和图标.音频文件.视频和其他应用程序使用的组件. 2. 在Android工程中,Android资源文件是同Java类文件分开存储的,大多数常见的资源类型存储在XML ...
- Android资源管理框架(Asset Manager)简介和学习计划
Android该应用程序包括两个部分组成的:代码和资源. 资源主要是与UI相关的东西,例如UI布局.和其他字符串和照片.代码和资源可以使独立的应用程序来组织的实际需求的基础上,在执行的时候UI.,就能 ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- Android 资源混淆 AndResGuard MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...
随机推荐
- shell test和find命令实例解析
shell test和find命令实例解析 下面以\build\core\product.mk相关部分来学习 define _find-android-products-files $(shell t ...
- 集合框架之Collection接口
Collection 层次结构中的根接口.Collection表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 coll ...
- 1089. Insert or Merge (25)
题目如下: According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, ...
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对 ...
- AsyncTask(异步任务)讲解-android的学习之旅(四十六)
AsyncTask简介 Android的UI线程主要处理用户的按键,触屏和View的绘制等,不能在里面处理耗时的操作,否则会出现ANR,因此耗时的操作要单独开一个线程处理,但是新线程不能直接处理UI线 ...
- 【一天一道LeetCode】#217. Contains Duplicate
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- 基于表单数据的封装,泛型,反射以及使用BeanUtils进行处理
在Java Web开发过程中,会遇到很多的表单数据的提交和对表单数据的处理.而每次都需要对这些数据的字段进行一个一个的处理就显得尤为繁琐,在Java语言中,面向对象的存在目的便是为了消除重复代码,减少 ...
- 远程调试Eclipse插件的设置
1. 被调试方建立一个命令行来运行Eclipse debugEclipse.cmd: eclipse.exe -nl zh_CN -vmargs -XX:+HeapDumpOnOutOfMemoryE ...
- python上下文管理器ContextLib及with语句
http://blog.csdn.net/pipisorry/article/details/50444736 with语句 with语句是从 Python 2.5 开始引入的一种与异常处理相关的功能 ...
- ROS_Kinetic_06 ROS基础内容(三)
ROS_Kinetic_06 ROS基础内容(三) 先插入一段闲话,关于android的碎片化,无非集中于版本过多,型号各异,品牌杂乱等,似乎这是开源软件无法摆脱的宿命,ROS似乎也在这条路上越走越远 ...