屏幕兼容性概览

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

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

此页面概述了 Android 上可用的功能,可帮助您的应用进行相应的调整。如需了解如何为不同的屏幕变化构建应用的更具体说明,请参阅以下文档

屏幕尺寸

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

灵活的布局

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

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

替代布局

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

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

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

可拉伸图片

由于您的布局需要拉伸以适应当前屏幕,因此您附加到任何布局视图的位图也需要如此。然而,在任意方向拉伸普通位图可能会导致奇怪的缩放伪影和图像失真。

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

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

像素密度

像素密度是屏幕物理区域内的像素数量,也称为 dpi(每英寸点数)。这与屏幕分辨率不同,屏幕分辨率是屏幕上的总像素数量。

图 3. 夸大演示了两台尺寸相同但像素密度不同的设备。

密度独立性

当您的应用在不同像素密度的屏幕上显示时,能够(从用户的角度)保持界面设计的物理尺寸不变,即可实现“密度独立性”,如图 3 所示。保持密度独立性非常重要,因为如果做不到这一点,按钮等界面元素在低密度屏幕上可能会显得更大,而在高密度屏幕上可能会显得更小。

Android 通过提供密度无关像素(dp 或 dip)作为计量单位来帮助您实现密度独立性,您可以使用此单位代替像素 (px)。

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

替代位图

为了让您的图像在所有屏幕上看起来最佳,请提供与每种屏幕密度相匹配的替代位图。如果您的应用仅提供适用于较低密度屏幕的位图,则 Android 在高密度屏幕上会将其放大,以便图像在屏幕上占据相同的物理空间。这可能导致位图中出现明显的缩放伪影。因此,您的应用必须包含更高分辨率的替代位图。

如需了解如何提供替代位图,请参阅提供替代位图

矢量图形

对于图标等简单类型的图像,您可以通过使用矢量图形来避免为每种密度创建单独的图像。由于矢量图形使用几何线条路径而非像素来定义插图,因此可以在任何尺寸下绘制而不会出现缩放伪影。

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

Wear OS、电视、车载设备和 ChromeOS

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

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

要支持这些设备,请参阅以下文档

折叠屏设备

折叠屏设备通常具有多个显示屏,设备折叠状态不同时,不同的显示屏或组合的显示屏会处于活动状态。请遵循本文档中的指南,使您的应用适应这些变化的配置。然而,某些配置可能具有不寻常的宽高比,因此请在各种设备上测试您的应用表现如何。

图 4. 折叠和展开。

通常,在针对各种窗口大小的多窗口模式下表现良好的应用,在折叠屏设备上也表现良好。

如需详细了解如何构建面向折叠屏设备的应用,请参阅了解折叠屏设备