Android应用资源全面解析

发表时间: 2023-11-16 18:00

资源是指代码使用的附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。

请始终将应用资源(例如图片和字符串)与代码分隔开,以便能够独立地维护这些资源。此外,还应为特定设备配置提供备用资源,方法是将其进行分组并放入专门命名的资源目录中。在运行时,Android 会根据当前配置使用合适的资源。例如,您可能想根据屏幕尺寸提供不同的界面布局,或根据语言设置提供不同的字符串。

外部化应用资源后,您便可使用在项目的 R 类中生成的资源 ID 来访问相应资源。

分组代码资源

将每种类型的资源放在项目的 res/ 目录下的相应子目录中。以下是一些常见的资源类型及其对应的子目录:

  1. 属性动画
  • 用于定义属性动画的 XML 文件
  • 放置于 res/animator/ 目录下
<!-- res/animator/translate_animation.xml --><!-- 将视图在 X 轴上从 0 移动到 200。 --><objectAnimator    xmlns:android="http://schemas.android.com/apk/res/android"    android:propertyName="translationX"    android:duration="1000"    android:valueFrom="0"    android:valueTo="200"    android:valueType="floatType" />
  1. 补间动画
  • 用于定义补间动画的 XML 文件。属性动画也可保存在此目录中,但为了区分这两种类型,属性动画首选 animator/ 目录。
  • 放置于 res/anim/ 目录下
<!-- res/anim/fade_in.xml --><!-- 从完全透明(fromAlpha="0.0")到完全不透明(toAlpha="1.0") --><alpha    xmlns:android="http://schemas.android.com/apk/res/android"    android:fromAlpha="0.0"    android:toAlpha="1.0"    android:duration="1000" />
  1. color/
  • 用于定义颜色状态列表的 XML 文件。
  • 放置于 res/color/ 目录下
  1. drawable/
    位图文件(PNG、.9.png、JPG 或 GIF)或编译为以下可绘制资源子类型的 XML 文件:
    • 位图文件
    • 九宫图(可调整大小的位图)
    • 状态列表
    • 形状
    • 动画可绘制对象
    • 其他可绘制对象
  1. mipmap/
  • 适用于不同启动器图标密度的可绘制对象文件。
  1. layout/
  • 用于定义界面布局的 XML 文件。
  1. menu/
  • 用于定义应用菜单(例如选项菜单、上下文菜单或子菜单)的 XML 文件
  1. raw/
  • 需以原始形式保存的任意文件。如要使用原始 InputStream 打开这些资源,请使用资源 ID(即 R.raw.filename)调用 Resources.openRawResource()
  • 但是,如需访问原始文件名和文件层次结构,请考虑将资源保存在 assets/ 目录(而非 res/raw/)下。assets/ 中的文件没有资源 ID,因此您只能使用 AssetManager 读取这些文件。
  1. values/
  • 包含字符串、整数和颜色等简单值的 XML 文件。
  • 其他 res/ 子目录中的 XML 资源文件会根据 XML 文件名定义单个资源,而 values/ 目录中的文件可描述多个资源。对于此目录中的文件,<resources> 元素的每个子元素均会定义一个资源。例如,<string> 元素会创建一个 R.string 资源,<color> 元素会创建一个 R.color 资源。
  • 由于每个资源均使用自己的 XML 元素进行定义,因此您可以随意命名文件,并在同一文件中放入不同的资源类型。但是,您可能需要将不同的资源类型分别放在不同的文件中,使其一目了然。例如,对于可在此目录中创建的资源,下面给出了相应的一些文件名约定:
    • arrays.xml 用于资源数组(类型化数组
    • colors.xml 用于颜色值
    • dimens.xml 用于维度值
    • strings.xml 用于字符串值
    • styles.xml 用于样式
  1. xml/
  • 可在运行时通过调用 Resources.getXML() 读取的任意 XML 文件。各种 XML 配置文件(例如搜索配置)都必须保存在此处。
  1. font/
  • 带有扩展名的字体文件(例如 TTF、OTF 或 TTC),或包含 <font-family> 元素的 XML 文件。

保存的资源为默认资源。换言之,这些资源定义应用的默认设计和内容。然而,不同类型的 Android 设备可能需要不同类型的资源。

例如,您可以为屏幕尺寸大于普通屏幕的设备提供不同的布局资源,以充分利用额外的屏幕空间。您还可以提供不同的字符串资源,以便根据设备的语言设置翻译界面中的文本。如需为不同设备配置提供这些不同资源,除默认资源以外,您还需提供备用资源。