Android 支持多种屏幕的基础是它能够管理针对当前屏幕配置 以适当方式渲染应用的布局和位图 可绘制对象。系统可处理大多数工作,通过适当地 缩放布局以适应屏幕尺寸/密度和根据屏幕密度缩放位图可绘制对象 ,在每种屏幕配置中渲染您的应用。但是,为了更适当地处理不同的屏幕配置 ,还应该:

  • 在清单中显式声明您的应用 支持哪些屏幕尺寸 通过声明您的应用支持哪些屏幕尺寸,可确保只有 其屏幕受支持的设备才能下载您的应用。声明对 不同屏幕尺寸的支持也可影响系统如何在较大 屏幕上绘制您的应用 — 特别是,您的应用是否在屏幕兼容模式中运行。要声明应用支持的屏幕尺寸,应在清单文件中包含 <supports-screens> 元素。
  • 为不同屏幕尺寸提供不同的布局 默认情况下,Android 会调整应用布局的大小以适应当前设备屏幕。大多数 情况下效果很好。但有时 UI 可能看起来不太好,需要针对 不同的屏幕尺寸进行调整。例如,在较大屏幕上,您可能要调整 某些元素的位置和大小,以利用其他屏幕空间,或者在较小屏幕上, 可能需要调整大小以使所有内容纳入屏幕。可用于提供尺寸特定资源的配置限定符包括 small、normal、large 和 xlarge。例如,超大屏幕的布局应使用 layout-xlarge/。从 Android 3.2(API 级别 13)开始,以上尺寸组已弃用,您 应改为使用 sw<N>dp 配置限定符来定义布局资源 可用的最小宽度。例如,如果多窗格平板电脑布局 需要至少 600dp 的屏幕宽度,应将其放在 layout-sw600dp/ 中。声明适用于 Android 3.2 的平板电脑布局一节将进一步讨论如何使用新技术声明布局资源。
  • 为不同屏幕密度提供不同的位图可绘制对象 默认情况下,Android 会缩放位图可绘制对象(.png、.jpg 和 .gif 文件)和九宫格可绘制对象(.9.png可用于密度特定资源的配置限定符(在下面详述) 包括 ldpi(低)、mdpi(中)、 hdpi(高)、xhdpi(超高)、xxhdpi (超超高)和 xxxhdpi(超超超高)。例如,高密度屏幕的位图应使用 drawable-hdpi/。 注:仅当要在 xxhdpi 设备上提供比正常位图大的启动器图标时才需要提供 mipmap-xxxhdpi有些设备会将启动器图标增大 25%。例如,如果您的最高 密度启动器图标已是超超高密度,缩放处理会降低其 清晰度。因此应在 mipmap-xxxhdpi请参阅提供 xxx-高密度启动器图标以了解详细信息。对启动程序图标以外的 UI 元素不应使用 xxxhdpi

注:将您的所有启动器图标放在 res/mipmap-[density]/ 文件夹中,而非 res/drawable-[density]/ 文件夹中。无论安装应用的设备屏幕分辨率如何,Android 系统都会将资源保留在这些密度特定的文件夹中,例如 mipmap-xxxhdpi。此 行为可让启动器应用为您的应用选择要显示在主 屏幕上的最佳分辨率图标。如需了解有关使用 mipmap 文件夹的详细信息,请参阅管理项目概览。

尺寸和密度配置限定符对应于 前面支持的屏幕范围中所述的通用尺寸和密度。

注:如果不熟悉配置限定符以及 系统如何使用它们来应用备用资源,请参阅提供备用资源了解详细信息。

在运行时,系统通过 以下程序确保任何给定资源在当前屏幕上都能保持尽可能最佳的显示效果:

  1. 系统使用适当的备用资源 根据当前屏幕的尺寸和密度,系统将使用您的应用中提供的任何尺寸和 密度特定资源。例如,如果设备有 高密度屏幕,并且应用请求可绘制对象资源,系统将查找 与设备配置最匹配的可绘制对象资源目录。根据可用的其他 备用资源,包含 

hdpi

  1.  限定符(例如 

drawable-hdpi/

  1. )的资源目录可能是最佳匹配项,因此系统将使用此 目录中的可绘制对象资源。
  2. 如果没有匹配的资源,系统将使用默认资源,并按需要向上 或向下扩展,以匹配当前的屏幕尺寸和密度。 “默认”资源是指未标记配置限定符的资源。例如,

drawable/

  1. 当系统查找密度特定的资源但在 密度特定目录中未找到时,不一定会使用默认资源。系统在缩放时可能 改用其他密度特定资源提供更好的 效果。例如,查找低密度资源但该资源不可用时, 系统会缩小资源的高密度版本,因为 系统可轻松以 0.5 为系数将高密度资源缩小至低密度资源,与以 0.75 为系数 缩小中密度资源相比,伪影更少。

如需有关 Android 如何通过使配置限定符与设备配置匹配来选择备用资源的更多信息,请参阅Android 如何查找最佳匹配资源。