Android 资源

本文介绍 Xamarin.Android 中 Android 资源的概念并阐述其用法。 其中介绍了如何使用 Android 应用程序中的资源来支持应用程序本地化以及多种设备(包括不同屏幕大小和密度的设备)。

概述

Android 应用程序很少只是源代码。 通常,创建一个应用程序会需要许多其他文件:视频、图像、字体和音频文件等,这里只列举了一些。 这些非源代码文件统称为资源,在生成过程中(与源代码一起)编译,并打包为 APK,用于分发和安装到设备上:

Packaging diagram

资源为 Android 应用程序提供了多种优势:

  • 代码分离 – 将源代码与图像、字符串、菜单、动画、颜色等分开。因此,本地化时,此类资源可以提供很大的帮助。

  • 面向多个设备 – 无需修改代码,即可为不同的设备配置提供更简单的支持。

  • 编译时检查 – 资源是静态的,并编译到应用程序中。 这样就可以在编译时检查资源的使用情况,因为在编译时很容易发现并更正错误,而在运行时则更难发现错误,更正错误的成本也更高。

启动新的 Xamarin.Android 项目时,会创建一个名为 Resources 的特殊目录,以及一些子目录:

Resources folder and contents

在上图中,应用程序资源根据其类型组织到相应的子目录中:图像将进入 drawable 目录;视图将进入 layout 子目录,等等。

可通过两种方法在 Xamarin.Android 应用程序中访问这些资源:以编程方式(在代码中)和以声明方式(在 XML 中使用特殊的 XML 语法)。

这些资源称为“默认资源”,由所有设备使用,除非指定了更具体的匹配项。 此外,每种资源类型都可以有 Android 可用于面向特定设备的备用资源。 例如,可以针对用户的区域设置、屏幕大小,或者设备从纵向到横向旋转 90 度等情况提供资源。在每种情况下,Android 都会加载应用程序使用的资源,而无需开发人员进行任何额外的编码工作。

通过在包含给定类型资源的目录末尾添加一个称为 qualifier 的短字符串来指定备用资源。

例如,resources/drawable-de 将为设置为德语区域设置的设备指定图像,而 resources/drawable-fr 将为设置为法语区域设置的设备保存图像。 在下图中可以看到提供备用资源的示例,其中运行的是相同的应用程序,只是改变了设备的区域设置:

Example screens for different locales

本文将全面介绍如何使用资源,并涵盖以下主题:

  • Android 资源基础 – 以编程方式和声明方式使用默认资源,将图像和字体等资源类型添加到应用程序中。

  • 设备特定的配置 – 支持应用程序中不同的屏幕分辨率和密度。

  • 本地化 – 使用资源支持可以使用应用程序的不同区域。