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——当中定义使用到的字符串常量。

 

原文摘自:

http://blog.sina.com.cn/s/blog_a130052501011bks.html

转载于:https://www.cnblogs.com/YangBinChina/p/3245091.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS特效代码

1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后&#xff0c;产生该文件 Onchange:当文字值改变时&#xff0c;产生该事件 Onselect:当文字加亮后&#xff0c;产生该文件 <input type"text" value"mm" οnfοcus"if…

Android之如何解决Listview里面的值出现了2次

Listview里面的值出现了2次 不废话,先爆照 我去,这个listview里面的值怎么出现了2次,一直在找原因,后来解决了,先看下我的部分代码吧。 这是mainactivity.xml内容 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools=…

php prettyprinter,gdb运行时错误:prettyprinter已注册:libstdc++v6

我的全球分销银行与wiki中的相同&#xff0c;只是我将路径替换为打印机.py. 在pythonimport syssys.path.insert(0, C:/Program Files (x86)/mingw-builds/x32-4.8.1-posix-dwarf-rev3/mingw32/share/gcc-4.8.1/python/libstdcxx/v6)from printers import register_libstdcxx_p…

C# 10 新特性 —— 插值字符串优化

C# 10 新特性 —— 插值字符串优化Intro字符串应该是我们平时使用的最多的一个类型&#xff0c;从 C# 6 开始我们开始支持了插值字符串&#xff0c;使得我们可以更方便的进行字符串的操作&#xff0c;现在很多分析器也推荐我们使用插值这种写法&#xff0c;这能够使得我们的代码…

电影院为何有散落的青瓜?

1 摄像头&#xff1a;你套个袋子我就认不出来了吗&#xff1f;▼2 路边惊现大熊猫&#xff01;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 好一个驼小姐&#xff08;via.豆瓣社死小组满杯草莓&#xff09;▼4 学弟的理解也不是无迹可寻▼5 台湾人过生日的方…

【ACM】nyoj_305_表达式求值_201308081018

表达式求值时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后&#xff0c;最近又学会了一些简单的函数求值&#xff0c;比如&#xff0c;它知道函数min(20,23)的值是20 &#xff0c;add(10,98…

HDU 4267 A Simple Problem with Integers [树状数组]

根据%ka中a和k的不同组合建立55棵树状数组&#xff0c;每次修改操作只对其中1棵树状数组进行操作&#xff0c;每次查询对其中10棵树状数组统计增量和。 1 #include <string.h>2 #include <stdio.h>3 #define MAXN 500054 int n,q,x[MAXN];5 int ta,tb,cc,k,op;6 in…

字符串之旋转词

题目: 如果一个字符串str,把字符串str前面任意的部分挪到后面形成的字符串叫做str的旋转词。比如str="12345",str的旋转词有"12345"、"23451"、"34512"、"45123"、和"51234"。给定两个字符串a和b,请判断a和b…

Ecshop:后台添加新功能栏目以及管理权限设置

一、添加菜单项打开 /admin/includes/inc_menu.php文件(后台框架左边菜单)&#xff0c;在最后添加一行如下&#xff1a;1$modules[17_other_menu][sns_list] sns_list.php?actlist;ecshop默认一级菜单项有16项&#xff0c;所里这里的例子从17开始。当然这个key可以随便取的&a…

年轻人不讲武德有多可怕?

1 孩子&#xff0c;走你&#xff01;▼2 这都是什么阴间燃料&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 年轻人不讲武德&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 当你偷瞄喜欢的男生▼5 贝多芬&#xff1a;我入土这么都多年了&#xff08;…

使用C#体验函数式编程之——Partial application(局部应用)

函数式编程函数式编程是一种编程范式&#xff0c;着力于避免共享状态、可变数据和副作用产生&#xff0c;函数是第一等公民。这与面向对象编程相反&#xff0c;在面向对象编程中&#xff0c;应用程序状态通常与对象中的方法共享和共存。函数式编程是声明式的而不是命令式的&…

poj 1860 Currency Exchange (最短路bellman_ford思想找正权环 最长路)

感觉最短路好神奇呀&#xff0c;刚开始我都 没想到用最短路 题目&#xff1a;http://poj.org/problem?id1860 题意&#xff1a;有多种从a到b的汇率&#xff0c;在你汇钱的过程中还需要支付手续费&#xff0c;那么你所得的钱是 money&#xff08;nowmoney-手续费&#xff09;*r…

如何解决Maven依赖本地仓库eclipse报错的问题

一、应用场景 为了使用maven强大的包依赖管理和项目管理功能&#xff0c;故在项目中使用maven2作为项目建构工具。但是我的项目在内网构建&#xff0c;为了能使用maven2&#xff0c;只能使用本地仓库依赖策略。但是&#xff0c;有时候明明本地仓库确确实实存在相应的依赖包&…

windows socket 简单实例

Windows下Socket编程主要包括以下几部分&#xff1a;服务端 1、初始化Windows Socket库。 2、创建Socket。 3、绑定Socket。 4、监听。 5、Accept。 6、接收、发送数据。客户端 1、初始化Windows Socket库。 2、创建Socket。 3、连接Socket。 4、接收、发送…

如何将 image 转成 base64 字符串?

咨询区 vaj90我的项目中有一个需求&#xff0c;需要将 base64 格式的字符串 data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD.. 转成 image 格式&#xff0c;请问我该如何实现&#xff1f;回答区 Patashu&#xff1a;我写了一个 image 和 base64 相互转换的帮助类&#xff…

oracle执行命令显示2,Oracle数据库执行脚本常用命令小结

1. 执行一个SQL脚本文件复制代码 代码如下:sqlplus user/passservicename或复制代码 代码如下:SQL>start file_names或复制代码 代码如下:SQL> file_name我们可以将多条sql语句保存在一个文本文件中&#xff0c;这样当要执行这个文件中的所有的sql语句时&#xff0c;用上…

史上最强的烧脑合集!能全都搞懂的只有天才!

▲ 点击查看牛津大学&#xff0c;全球学生削尖脑袋想进的地方。它真正吸引人的&#xff0c;不仅是雄厚的师资、精湛的学术&#xff0c;更因为立校800余年来&#xff0c;始终有一套经典、独门的“高智商训练”方法&#xff01;25位首相、53位总统、11位国王、47位诺贝尔奖得主&a…

github上面如何编辑README

github上面如何编辑README 今天把自己做好的 《手机摇一摇震动刷新(支持ListView、GridView、Webview)》上传到github,之前代码都上传好了,就差介绍了 第一步:找到READM.md文件进入编辑状态 找到了READM.md文件,修改一番以后,我想试下水,先提交看看,如…

学习使用新浪接口随笔(一)

小生初入C#领域&#xff0c;因为学校部门里面在办新浪微博活动的时候&#xff0c;需要统计转发数量。&#xff08;个别团或者班级会去买转发数量&#xff0c;这没节操的&#xff09;&#xff0c;所以有的时候统计起来的时候&#xff0c;会比较麻烦。于是就产生了想利用新浪的AP…

安装office时,提示某项注册表无法写入,请查看是否有管理员权限

安装office时&#xff0c;提示某项注册表无法写入&#xff0c;请查看是否有管理员权限 大概就是这个意思&#xff0c;记不清楚了&#xff0c;解决办法&#xff1a; 首先如果你确认软件没有问题并且是用管理员帐户登录的话&#xff0c;请关闭防火墙与杀毒软件&#xff0c;重试&a…