android项目中values中几个文件的作用
最近反编译了几个Android软件,发现一些以前未用到的资源文件:
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——当中定义使用到的字符串常量。
res/values/ids.xml
:
相关推荐
│ │ ids.xml │ │ strings.xml │ │ styles.xml │ │ │ ├─art │ │ attrs.png │ │ demo1.gif │ │ demo2.gif │ │ icon.png │ │ Thumbs.db │ │ │ ├─gradle │ │ └─wrapper ...
AndroidXML反编译神器工具使用说明 1.先下载APK。 2.必须配好JAVA环境变量 3.现在反编译工具,比如XP系统32位和WIN7系统32位选择Android_decompilation.exe,WIN7系统64位选择Android反编译工具(64位).exe 4.选择后...
scanAndroidUnUseResouce 扫描android项目里面没有使用的资源文件 使用场景:扫描项目下没用的资源 ...4,其中可能需要手动调整 res/values/string.xml 和 ids.xml 文件看看格式是否正确 把该脚本放在 后续在完善
Android 轮日期选择器 这是基于项目的控件。 特征 最小-最大年份设置 ...将下一个 id 添加到您的 ids.xml 文件中: 将自定义视图添加到您的布局并在活动代码中进行配置,如下所示: WheelDat
Android开发过程中,经常遇到一个项目需要重复的定义相同样式的标题栏,Android相继推出了actionBar, toolBar, 相信有用到的朋友也会遇到一些不如意的时候,比如标题栏居中时,需要自定义xml文件给toolBar等,不了解...
修改res/values/ids.xml,列出2中得到的ID。 修改 project.properties 以定义 google-play-services_lib 的相对路径 libs/processing-core.jar.dummy 中放置了一个虚拟文件,因此将其替换为processing-core.jar。 ...
通过复制/粘贴/jar/error-tracking-lib.jar或将其包含到您的maven pom.xml中。 将Parse.com Android库添加到您的项目中。 初始化错误跟踪库: ErrorTracking.startSession(this, applicationId, clientKey); // ...
打开/res/values/ids.xml并更新以下内容: <? xml version = " 1.0 " encoding = " utf-8 " ?> < string xss=removed>YOUR APPLICATION ID HERE 亚马逊游戏圈 从亚马逊的仪表板上下载api_key.txt并将其...
这里说下我的简单的回复项目是维护的之前的是为了统一管理使用了@id 方便修改 ,因为在ids.xml 里面有引用,@+id 是新增了,没有那样写,感觉有点麻烦,不过为了统一最后自己又修改为了@id,可能这些说的有些模糊 ...
把ids.xml文件放在res / values目录下 把三张图片放在drawable-hdpi目录下 把activity_capture.xml文件放入res / layout目录下 把raw文件夹放在res目录下 把zxing文件夹放在src目录下 :报错的类文件,Ctrl + Shift ...
value下的ids.xml文件 value下的string内容 value下的color内容 layout下的Activity_scanner 等复制到你的layout下 建议的是com.google.zxing底下的文件全部都复制到对应的java目录底下,res底下直接复制粘贴到对应...
bnf.lang hcl.lang mssql.lang qu.lang xml.lang boo.lang html.lang mxml.lang r.lang xpp.lang c.lang httpd.lang n3.lang rebol.lang yaiff.lang ceylon.lang icon.lang nasal.lang ...
DrawerLayout的封装,对于菜单是ListView的应用来说,这个库提供了更直接的使用方式,你不再需要去写menu的布局,如果你对DrawerLayout的使用没有信心,这个库使用起来可能会让你觉得简单些。... 直接用java代码创建 1......
我们只需将Zxing包下的所有代码copy一份到我们的项目中去,除了这些还需要zxing的jar包,最后相应的资源文件,包括values文件下的ids文件、raw文件中的资源文件(可以替换)、layout文件下的activity_capture.xml...
}在xml布局文件中使用官方RecyclerView<android.support.v7.widget.RecyclerView android:id="@ id/swipe_drag_tree_recyclerView" android:layout_width="match_parent" android:layout_height="match_...
Gruntify 您的 Titanium 工作流程##Sample Code Appcelerator Titanium 基于跨平台 iOS 和 Android 琐事益智应用程序项目,用于徽标匹配、测验和内存应用程序。 这是对示例代码的快速检查,以支持我的 20141105 正如...