android项目中values中几个文件的…

原创 2015年07月07日 11:32:45
最近反编译了几个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——当中定义使用到的字符串常量。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Values文件作用及使用方法

Android valuses位于app/res/values文件是用来存放安卓资源的资源的文件其中包括四个个XML文件:1. colors.xml 保存颜色资源例如: ...
  • Small_Mouse0
  • Small_Mouse0
  • 2017年02月28日 13:46
  • 600

android项目中values中几个文件的作用

ids.xml——为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。这些...
  • caiwenfeng_for_23
  • caiwenfeng_for_23
  • 2013年10月16日 15:20
  • 2647

Android适配——drawable和values的加载规则

Google搞了一大套 dip、sp、mdpi、hdpi、xhdpi之类的这些东西,简单说来,就是为了让我们轻松实现“与设备密度无关的视觉大小一致性”,这里需要明确的“视觉大小一致性”,就是说无论是在...
  • u011348999
  • u011348999
  • 2016年08月25日 13:44
  • 5849

Android各国语言Values文件夹命名规则

android多国语言文件夹文件汇总如下: 维吾尔文(中国):values-ug-rCN 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):va...
  • wlr_tang
  • wlr_tang
  • 2014年04月16日 14:28
  • 9986

android 手机适配之values适配dimen值

android 适配屏幕的方式有很多,最方便最直接的无非就是适配values里的dimens文件值来进行适配. 张鸿洋大神已经写过一篇适配的文章,很详细 但是我在阅读的时候还是有点疑问,这个val...
  • qq_26331411
  • qq_26331411
  • 2016年08月03日 16:47
  • 4612

Android values

1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,...
  • microwhj
  • microwhj
  • 2011年06月23日 15:04
  • 2413

Android values文件夹适配屏幕

在面对不同屏幕分辨率的时候,如果像素差异比较大,且dp差不多一样的时候,可以使用不同分辨率来区分。如平板的7寸和14寸屏幕,一个为1024*600分辨率,一个为1920*1080,因此就需要在dime...
  • u013564742
  • u013564742
  • 2017年09月25日 18:58
  • 385

Android 布局文件中的values-v11,values-v14,values-v19代表的含义

对于初学者而言,有时候看到项目中会有values-v11,values-v14,values-v19等文件夹,里面有dimens,styles等。那具体代表是什么呢?我从2.3时代开始接触androi...
  • binglan520
  • binglan520
  • 2017年07月13日 17:09
  • 389

android 项目工程中 values values-11 values-14 区别

这 values-v11代表在API 11+的设备上,用该目录下的styles.xml代替res/values/styles.xml values-v14代表在API 14+的设备上,用该目录下的...
  • gaoxin12345679
  • gaoxin12345679
  • 2014年10月23日 10:03
  • 669

android values适配中 文件夹加载策略解析

android values适配中 文件夹加载策略解析
  • cyuyanshujujiegou
  • cyuyanshujujiegou
  • 2017年09月14日 17:27
  • 360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android项目中values中几个文件的…
举报原因:
原因补充:

(最多只允许输入30个字)