android 中的资源介绍
概括的讲,android中的资源是指非代码部分。比如 图片,mp3, 字符串, xml文件等。
在一个Android 工程中,和 src 源文件夹并列的两个文件夹,分别叫做res和assets .这两个文件夹是用来保存资源文件的。
不同点:
1,res中的资源可以通过R资源类之间访问。这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。这种方式在Android中比较常用。
会在R.java文件下生成标记。
在res文件夹下还可以定义一下目录,对资源进行分类:anim(xml动画文件), drawable(图片) , layout(布局文件),menu(菜单), raw(二进制文件),values(常量值),xml(xml文件)
res/anim:这里存放的是动画资源。
res/xml:可以在Activity中使用getResource().getXML()读取这里的资源文件
res/raw:该目录下的文件可以直接复制到设备上,不能有子文件夹,编译软件时,这里的数据不需要编译,直接加入到程序安装包中,使用方法是getResource().OpenRawResources(ID),其中参数ID的形式是R.raw.XXX.
2. assets中保存的一般是原始的文件。例如,mp3文件,android程序不能通过R类直接访问。必须通过AssetManager类以二进制流的形式来读取。
assets不会在R.java文件下生成相应的标记。
一般使用资源分为两种方式:
1. 在代码中使用 context 的 getResources() 方法得到Resource 对象,该对象提供了获得各种类型资源的方法。
2. 在其他资源中引用资源的一般格式是这样的:
(1) @[包名称:] 资源类型/资源名称
(2) R.资源类型.资源名称
颜色资源的使用
1,颜色值的定义是通过RGB三原色来定义的。
2,颜色资源xml文件的定义:
资源位置 | /res/values/colors.xml 文件名必须用这个?现在是! |
获得颜色方法 | Resources.getColor() |
引用资源格式 | Java中: R.color.color_name |
| Xml中: @color/color_name |
<resources> 根基点都必须是resources
<color name=”bg”>#ff0000</color>
<color name=”text”>#0000ff</color>
</resources>
public void test(View v){ //添加一个button响应事件。
int color = this.getResources().getColor(R.color.bg_color);
Toast.makeText(this, “”+color, 1).show();
this.getWindow().setBackgroundDrawableResource(R.color.bg_color);
字符串资源的使用
在一个Android工程中,我们可能会使用到大量的字符串作为提示信息。在这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性。
在代码中我们使用Context.getString() 方法,通过传递资源ID参数来得到该字符串,也可以在其他资源文件中引用字符串资源,引用格式为“@string/字符串资源名称”
资源位置 | Res/values/strings.xml |
获得string方法 | Context.getString |
引用资源格式 | Java中: R.string.string_name |
| Xml中: @string/string_name |
尺寸(dimens)资源的使用
我们可以使用一些常用的尺寸单位来定义一些文字尺寸,视图组建的宽和高等。尺寸资源是一个数字类型的数据,被定义在 res\values\dimens.xml文件中。
单位表示 | 单位名称 | 说明 |
px | 像素 | 屏幕真实像素 |
in | 英寸 | 基于屏幕的物理英寸 |
dp | 和密度无关的像素 | 相对屏幕物理密度的抽象单位 |
sp | 和精度无关的像素 | 和dp类似 |
资源位置 | Res/values/dimens.xml |
Xml格式 | <resources>根元素 <dimen name> value </dimen> |
获得尺寸资源的方法 | getResource().getDimension(); |
引用尺寸资源的格式 | Java代码中: R.dimen.dimen_name Xml文件中: @dimen/dimen_name |
一般系统都给我们创建了一个默认的。
代码用法如下:
Button bt = (Button)findViewById(R.id.button1);
float width = this.getResources().getDimension(R.dimen.padding_large);
bt.setWidth((int)width);