1.src:
存放所有的*.Java
源程序。
2.gen:
为ADT
插件自动生成的代码文件保存路径,里面的R.java
将保存所有的资源ID
。
3.assets:
可以存放项目一些较大的资源文件,例如:图片、音乐、字体等。
4.res:
可以存放项目中所有的资源文件,例如:图片(.png、.jpg)、文本等。
5.res/drawable-hdpi:
保存高分辨率图片资源,可以使用Resources.getDrawable(id)
可以获得资源类型。
6.res/drawable-ldpi:
保存低分辩率图片资源,可以使用Resources.getDrawable(id)
可以获得资源类型。
7.res/drawable-mdpi:
保存中等分辨率图片资源,可以使用Resources.getDrawable(id)
可以获得资源类型。
8.res/layout:
存放所有的布局文件,主要是用于排列不同的显示组件,在Android
程序中要读取此配置。
9.res/values:
存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:
· arrays.xml:
定义数组数据;(在个这个xml
命名的时候可以随便起名,因为最后用的时候只是用到写在这个xml
文件中的array
的名字)
比如在arrays.xml里:
<string-array name="reboot_item">
<item>Reboot</item>
<item>Recovery</item>
<item>BootLoader</item>
</string-array>
在代码里获取:
String item0 =this.getResources().getStringArray(R.array.reboot_item)[0];
String item1 = this.getResources().getStringArray(R.array.reboot_item)[1];
CharSequence[] items = this.getResources().getStringArray(R.array.reboot_item);
·dimens.xml
:定义尺度,可以使用Resources.getDimension()
获得这些资源;有时候我们为了维护一个工程,或者想定义一个button
样式,或textView
样式,这些样式中包含着文字的大小,背景图片,前置图片等一些资源。而且这个button
或textView
会在很多地方要用到它,原本我们可以将它的文字大小,图片样式等写在XML中或者代码中。但这样的维护性太差了;一旦要修改的时候,需要挨个文件找,挨个修改。现在我们利用dimens
来维护时,只需要修改对应的dimens
里定义的值。所有引用它的地方都会自动的修改这样,我们就达到了维护的目的;将要定义的属性写在dimens.xml
中,以达到资源重复利用;
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<dimen name="main_tab_h">80dp</dimen> 设置图片时用dp
<dimen name="main_tab_tsize">22sp</dimen> 设置字体大小时用sp
<dimen name="set_userinfo_prow">100dp</dimen>
<dimen name="set_cpwd_prow">100dp</dimen>
</resources>
备注:在xml
中调用时直接android:layout_height="@dimen/main_tab_h"
调用为其设置大小在activity
中设置时用context.getResource().getDimensource(r.dimen.main_tab_h);
即可为其动态设置大小。
· strings.xml:
定义字符串,可以使用Resources.getString()
或Resources.getText()
方法获得这些资源;
· styles.xml:
定义显示的样式文件;(如下代码,在调用时用@style/TextView
即可)
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="TextView">
<item name="android:textColor">@color/green</item>
</style>
</resources>
·attrs.xml:
(在自定义一个控件的时候,如果定义一些新的属性的时候,会用到这个文件来设置)当中定义的是类的属性,属性是为了能在xml
文件中被引用到,换句话说就是指定类中变量(也就是属性的实际作用者)的值。这些属性会在类的构造函数中用到。看过一两个源码就会明白,构造函数中的TypedArray
其实就是属性的数组,数组的成员会被赋给类里的成员,完成从xml的初始化。类的构造函数一般有三个,一个是Class(context)
,这个用于在代码中创建一个类,所以只包含一个上下文;Class(context,attrs)
和Class(context, attrs, defStyle)
用于从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.xml
的原因:
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
做了改动后,执行makeupdate-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
都不用改,兼容性我还不确定。
·colors.xml:
定义表示颜色的数据;
<resources>
<!-- 定义几种常用的颜色 -->
<color name="gold">#b89766</color>
<color name="white">#FFFFFF</color><!-- 白色 -->
<color name="black">#000000</color><!-- 黑色 -->
</resources>
10.res/raw:
自定义的一些原生文件所在目录,像音乐、视频等文件格式。存放直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID 也可以用,即R.raw.somefilename,Resources.getRawResource()
方法可以获得这些资源。
11.res/xml:
用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可以使用·Resources.getXML()·方法获取。
12.res/anim:
用于定义动画对象。存放定义了补间动画(tweened animation)或逐帧动画(frame by frame animation)的XML文件。(该目录下也可以存放定义property animations的XML文件,但是最好还是分开存放)
13.res/animator:
存放定义了property animations
(android 3.0
新定义的动画框架)的XML
文件
14.res/color/:
存放定义了颜色状态列表资源(Color State List Resource)
的XML
文件
15.res/menu/:
存放定义了应用程序菜单资源的XML
文件。正确创建文件的方法:new Folder
,名字menu,new Other——Android——XML
,选择menu
类型,填写名称,确定即可。菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用<menu>
标签作为根节点。除了<menu>
标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是<item>
和<group>
。
网友评论
1.r.dimen.
2.所指定的一个32的id值