Android 运行在各种具有不同屏幕尺寸和像素密度的设备上。系统执行基本缩放和调整大小以使您的用户界面适应不同的屏幕,但有一些方法可以帮助您的 UI 更好地适应每种屏幕类型。
此页面概述了 Android 上可用的功能,以帮助您的应用相应地进行调整。有关如何为不同的屏幕变化构建应用的更具体说明,请参阅以下文档
屏幕尺寸
屏幕尺寸是应用 UI 的可见空间。应用识别的屏幕尺寸不是设备屏幕的实际尺寸。应用必须考虑屏幕方向、系统装饰(如导航栏)和窗口配置更改,例如用户启用 多窗口模式 时。
灵活的布局
默认情况下,Android 会调整您的应用布局的大小以适合当前屏幕。为了帮助您的布局在屏幕尺寸发生细微变化时也能很好地调整大小,请牢记灵活性来实现您的布局。不要硬编码 UI 组件的位置和大小。相反,让视图大小伸展,并指定相对于父视图或其他同级视图的视图位置,以便您的预期顺序和相对大小在布局扩展时保持不变。
要了解有关灵活布局的更多信息,请参阅 响应式设计。
备用布局
灵活的布局很重要,但您还需要设计不同的布局,以优化不同设备上可用空间的用户体验。Android 允许您提供备用布局文件,系统会根据当前设备的屏幕尺寸在运行时应用这些文件。
要了解如何创建备用布局,请参阅 自适应设计。
可拉伸图像
由于您的布局需要伸展以适合当前屏幕,因此您附加到任何布局视图的位图也需要伸展。但是,在任意方向上伸展普通位图会导致奇怪的缩放伪像和扭曲的图像。
为了解决这个问题,Android 支持九宫格位图,您可以在其中指定一些可拉伸的小像素区域,而图像的其余部分则保持不缩放。
要了解有关九宫格位图的更多信息,请参阅 NinePatch 可绘制对象。
像素密度
像素密度是指屏幕物理区域内的像素数量。它被称为 dpi(每英寸点数)。这与屏幕分辨率不同,屏幕分辨率是指屏幕上的总像素数。
密度独立性
当您的应用在具有不同像素密度的屏幕上显示时,它会保留 UI 设计的物理尺寸(从用户的角度来看),从而实现“密度独立性”,如图 3 所示。保持密度独立性很重要,因为如果没有它,像按钮这样的 UI 元素可能会在低密度屏幕上显示得更大,而在高密度屏幕上显示得更小。
Android 通过提供**密度无关像素** (dp 或 dip) 作为测量单位,帮助您实现密度无关性,您可以使用它来代替像素 (px)。
要了解更多有关密度无关像素的信息,请参阅 使用密度无关像素。
备用位图
要使您的图像在所有屏幕上看起来最佳,请提供与每个屏幕密度匹配的备用位图。如果您的应用程序仅为较低密度屏幕提供位图,Android 会在高密度屏幕上将它们放大,以便图像在屏幕上占据相同的物理空间。这可能会导致位图中出现可见的缩放伪像。因此,您的应用程序必须包含更高分辨率的备用位图。
要了解如何提供备用位图,请参阅 提供备用位图。
矢量图形
对于像图标这样的简单图像类型,您可以通过使用矢量图形来避免为每种密度创建单独的图像。因为矢量图形使用几何线路径而不是像素来定义插图,所以它们可以以任何大小绘制,而不会出现缩放伪像。
要了解有关使用矢量图形的更多信息,请参阅 优先使用矢量图形。
Wear OS、TV、汽车和 ChromeOS
上述建议适用于所有 Android 外形尺寸,但如果您想为 Wear OS、Android TV、Android Auto、Android Automotive OS 或 ChromeOS 设备构建应用程序,您需要做更多工作。
每种设备类型都有自己的用户交互模型,您的应用程序必须适应这些模型。在某些情况下,例如对于 Wear OS,您需要重新考虑应用程序的用户体验并构建专门针对该设备的应用程序。另一方面,为了支持 ChromeOS 设备(例如 Google Pixelbook),您可能只需对现有应用程序进行一些小的修改即可支持键盘或鼠标交互和更大的屏幕。
要支持这些设备,请参考以下文档:
可折叠设备
可折叠设备通常具有多个显示屏,不同的显示屏(或显示屏组合)在设备折叠的不同状态下处于活动状态。请遵循本文档中的指南,使您的应用程序能够适应这些不断变化的配置。但是,某些配置可能具有不寻常的长宽比,因此请测试您的应用程序在各种设备上的行为。
通常,在各种窗口大小下都能在多窗口模式中良好运行的应用程序,在可折叠设备上也能表现良好。
要了解有关为可折叠设备构建应用程序的更多信息,请参阅 了解可折叠设备。