概述
Resource的含义: 一款优秀的APP不能只包含代码.Resource是指为代码提供服务的其它文件和静态内容, 比如图片, 布局文件, 用户接口字符串等.
使用Resource的好处: 可以将资源跟代码分离, 更便于独立管理. 并且可以大大提高不同配置下APP的适应性, 比如不同的屏幕尺寸, 不同的语言等.
Resource典型的应用场景: 每种Resource都支持默认和多个备选资源,默认资源用于一般情况(没有特殊的配置), 备选资源一般用于指定的配置. Resource通过/res下文件夹的名字来区分它们.栗子:
如果我们不使用指定的Resource, 只有一种默认Resource, 那么当APP运行在不同配置的设备上的时候, 就会不加区分的显示成同一个样子:
这显然不怎么合理, 为了应对这样的场景, 我们为横向设备指定了特殊的Resource, 在/res/layout-land/目录下增加布局文件, 那么在不同设备上, 就会显示的合理得多:
制作资源文件
Resource们都在哪:
在一个Android工程中, 所有的Resource文件都放在/res目录下, 一个典型的工程目录大概长这样:
res支持的子目录包括:
animator: 用于定义动画属性的xml文件.
anim: 用于存放”tween动画”的xml文件.
color: 用于存放”状态颜色列表”的xml文件.
drawable: 用于存放bitmap文件(png,9.png, jpg, gif)或者定义drawable的xml文件.
mipmap: 用于存放APP图标的drawable文件.
layout: 存放界面布局文件.
menu: 存放菜单定义文件.
raw: 不希望在编译的时候被改变的文件.
values: 存放定义简单值的文件, 比如字符串, 整形, 颜色等.
xml: 存放任意XML文件, 可以通过Resource.getXML()方法获得. 各种XML配置文件, 需要存放在此处.
我们不能在res目录下直接存放xml文件, 这会导致编译错误.
管理res目录
如何通过管理res目录提供备选的资源文件呢? 假如我们已经有了一份默认的资源文件, 它们长这样: