屏幕兼容性概览

Android 可在具有不同屏幕尺寸和像素密度的各种设备上运行。系统会执行基本的缩放和大小调整操作,以使界面适应不同的屏幕,但有一些方法可以帮助您的界面更好地适应每种屏幕类型。

图 1. Android 可在具有不同屏幕和像素密度的不同设备上运行。

本页将概述 Android 中提供的功能,以帮助您的应用进行相应调整。如需了解有关如何针对不同屏幕变体构建应用的更具体的说明,请参阅以下文档:

屏幕尺寸

屏幕尺寸是应用界面的可见空间。您的应用可以识别屏幕尺寸,而不是设备屏幕的实际尺寸。应用必须考虑屏幕方向、系统装饰(如导航栏)和窗口配置更改(例如当用户启用多窗口模式时)。

灵活布局

默认情况下,Android 会调整应用布局的大小以适应当前屏幕。为了帮助您调整布局以适应屏幕尺寸的细微变化,请灵活地实现布局。请勿对界面组件的位置和大小进行硬编码。而应让视图尺寸进行拉伸并指定视图相对于父视图或其他同级视图的位置,以便在布局扩大时,实现预期的顺序和相对尺寸保持不变。

如需详细了解灵活布局,请参阅自适应设计

替代布局

灵活的布局很重要,但您还需要设计不同的布局,以便针对不同设备上的可用空间优化用户体验。Android 允许您提供备用布局文件,系统将在运行时根据当前设备的屏幕尺寸应用备用布局文件。

图 2. 同一应用针对不同屏幕尺寸使用不同的布局。

如需了解如何创建备用布局,请参阅自适应设计

可拉伸图片

由于布局需要拉伸以适应当前屏幕,因此您附加到任何布局视图的位图也需要进行拉伸。但是,朝任意方向拉伸普通位图可能会导致奇怪的缩放失真和图像倾斜。

为了解决此问题,Android 支持九宫位图,您可以在其中指定可拉伸的小像素区域,而图像的其余部分保持不缩放。

如需详细了解九宫格位图,请参阅 NinePatch 可绘制对象

像素密度

像素密度是屏幕上单位面积内的像素数。称为 dpi(每英寸的点数)。它与屏幕分辨率不同,屏幕分辨率是屏幕上像素的总数。

图 3. 两个尺寸相同但像素密度不同的设备的夸张图示。

密度独立性

当应用在具有不同像素密度的屏幕上显示时,如果从用户的角度来看,应用保持了界面设计的物理尺寸,便可实现“不受密度制约”,如图 3 所示。保持密度独立性非常重要,因为如果不这样做,像按钮这样的界面元素在低密度屏幕上可能会变大,在高密度屏幕上会变小。

Android 通过提供密度无关像素(dp 或 dip)而不是像素 (px) 作为您使用的测量单位,帮助您实现不受密度制约的屏幕。

如需详细了解密度无关像素,请参阅使用密度无关像素

备用位图

为了让图片在所有屏幕上都能呈现最佳效果,请提供备用位图来匹配各种屏幕密度。如果您的应用仅针对低密度屏幕提供位图,则在高密度屏幕上 Android 会将位图放大,以使图片在屏幕上占用相同的物理空间。这可能会导致位图中出现明显的缩放失真。因此,应用必须包含分辨率更高的备用位图。

如需了解如何提供备用位图,请参阅提供备用位图

矢量图形

对于简单类型的图片(如图标),您可以使用矢量图形避免为每种密度创建单独的图片。由于矢量图形使用几何线条路径(而不是像素)定义插图,因此它们可以任意尺寸绘制而不会出现缩放失真。

如需详细了解如何使用矢量图形,请参阅首选矢量图形

Wear OS、TV、Auto 和 ChromeOS

上述建议适用于所有 Android 设备类型,但如果您想构建适用于 Wear OS、Android TV、Android Auto 或 ChromeOS 设备的应用,则需要做更多工作。

其中每种设备类型都有自己的用户互动模型,您的应用必须支持该模型。在某些情况下(例如对于 Wear OS),您需要重新考虑应用的用户体验,并构建专用于该设备的应用。另一方面,若要支持 ChromeOS 设备(例如 Google Pixelbook),您可能只需对现有应用进行细微修改,即可支持键盘或鼠标互动以及更大的屏幕。

如需支持这些设备,请参阅以下文档:

可折叠设备

可折叠设备通常具有多个显示屏,在不同的设备折叠状态下,不同的显示屏(或显示屏组合)会处于活动状态。请遵循本文档中的准则,让您的应用适应这些变化的配置。不过,某些配置的宽高比可能异常,因此请测试应用在各种设备上的行为方式。

图 4. 折叠和展开。

通常,如果应用在多窗口模式下能够很好地适应各种窗口大小,同样能够在可折叠设备上正常运行。

如需详细了解如何构建适用于可折叠设备的应用,请参阅了解可折叠设备

屏幕不兼容

尽管 Android 框架和工具提供了让应用适用于所有屏幕配置所需的一切,但您可能会由于不兼容而决定不让您的应用支持某些屏幕配置。在这种情况下,您可以声明受限屏幕支持