自适应应用支持各种尺寸的显示屏:整个设备屏幕、可调整大小 多窗口模式下的窗口,屏幕方向为纵向和横向,折叠 以及可折叠设备的展开显示屏。
配置设置和 API 的简短列表可帮助您构建自适应 。但是,一些过时的设置和 API 与自适应应用不兼容 必须避免
尺寸可调整性
自适应应用支持应用大小调整和多窗口模式。
<activity>
的 resizeableActivity
属性和
<application>
清单元素可启用或停用多窗口模式
模式(在 Android 11(API 级别 30)及更低版本中)。在 Android 12(API 级别 31)和
更高的大屏设备则支持多窗口模式,无论其采用哪种
属性。如需了解详情,请参阅支持多窗口模式。
让您的应用能够参与多窗口、多任务处理场景, 提高用户的工作效率和满意度。
如果您的应用以低于 24 的 API 级别为目标平台,则设置 resizeableActivity="true"
;
否则,没关系,Android 7.0 (API) true
级别 24)及更高级别。
不要为任何 API 级别设置 resizeableActivity="false"
。不排除您的应用
从涉及多窗口模式的用例中受益
方向
自适应应用支持纵向和横向方向,不受显示屏限制 或窗口模式。
screenOrientation
清单设置会限制 activity 的屏幕方向。
从应用清单中清除 screenOrientation
设置。
锁定应用的屏幕方向不会阻止窗口大小发生变化。应用
在设备进入多窗口模式时、在设备折叠或展开时调整大小,
或对自由窗口的大小进行调整时您的应用必须支持期限变更
尺寸来决定 screenOrientation
属性设置为何值。
不限制 activity 屏幕方向。锁定屏幕方向的应用会进入信箱模式 。
采用信箱模式的应用在 Google Play 上的曝光度可能会降低, 平板电脑、可折叠设备和 ChromeOS 设备。
宽高比
由于屏幕尺寸和窗口尺寸不同,它们的宽高比也会不同 再到窄到方形,再到短和宽。
minAspectRatio
和 maxAspectRatio
清单设置限制
应用的宽高比与硬编码值之间的比例。
无论相对尺寸如何,您的应用都会适合屏幕大小。
从您的应用中清除 minAspectRatio
和 maxAspectRatio
设置
清单。或者确保应用可调整大小且宽高比已妥善处理
(请参阅可调整大小性部分)。
请勿尝试控制应用的相对尺寸。如果您的应用在 屏幕或宽高比与 应用的宽高比,则应用会进入信箱模式。
在 Android 14(API 级别 34)及更高版本中,用户可以替换应用宽高比 可展开进入信箱模式的应用,以填充可用的显示区域。请参阅设备 兼容模式。
窗口大小
针对不同屏幕尺寸优化布局是 自适应设计。自适应应用专注于应用窗口大小,而非设备 屏幕尺寸当应用全屏显示时,应用窗口是设备屏幕。
窗口大小类别提供了一种系统化的方法来确定和分类 应用窗口的尺寸通过更改窗口形式的布局来调整应用 更改应用的大小类
根据窗口大小类别评估应用窗口大小。
如需确定窗口大小类别,请使用 currentWindowAdaptiveInfo()
Compose Material 3 自适应库的顶层函数。有关
相关信息,请参阅构建自适应应用。
不要忽视窗口大小类定义的效用和 内置 API请勿使用已废弃的 API 计算窗口大小。
已弃用的 API
旧版平台 API 无法正确衡量应用窗口;一些衡量 设备屏幕,有些不采用系统装饰。
使用WindowManager#getCurrentWindowMetrics()
和
WindowMetrics#getBounds()
:用于获取应用窗口的大小。使用
WindowMetrics#getDensity()
:用于获取显示密度。
请勿使用以下已废弃的 Display
API 来确定窗口大小:
getSize()
:在 Android 11(API 级别 30)中已废弃getMetrics()
:在 Android 11(API 级别 30)中已废弃getRealSize()
:在 Android 12(API 级别 31)中已废弃getRealMetrics()
:在 Android 12(API 级别 31)中已废弃
Compose
Jetpack Compose 专为自适应界面开发而设计。无 XML,无布局
文件,没有资源限定符。仅使用基于 Kotlin 的无状态可组合项
例如描述界面的 Column
、Row
和 Box
,以及修饰符
例如 offset
、padding
和 size
,它们会向界面添加行为
元素。
使用 Compose 进行构建。及时掌握最新功能和版本。
请勿依赖过时的技术。别让应用过时。
Compose Material 3 自适应库
Compose Material 3 Adaptive 库提供了一些组件和 API, 促进自适应应用的开发。
使用以下 API 让您的应用具有自适应能力:
NavigationSuiteScaffold
:在导航栏和 导航栏。ListDetailPaneScaffold
:实现“列表-详情”规范布局。 将布局调整为应用窗口大小。SupportingPaneScaffold
:实现规范化辅助窗格 布局。
无需再做任何重复劳动。不要错过开发者工作效率提升的大好机会 所有 Jetpack Compose 库都提供此功能。
布局
用户希望应用能够通过补充 内容或增强型控件
自适应应用会根据显示屏的变化优化布局,尤其是 应用窗口大小的变化或设备折叠状态的变化。
在窗口大小发生变化时更改界面组件,以利用可用的 展示空间例如,更换紧凑型底部导航栏 中等窗口和较大窗口上的垂直导航栏的窗口大小。 调整对话框的位置,使其可在所有屏幕上访问。
将内容整理到窗格中,以实现多窗格布局,例如 用于显示动态内容的列表详情和辅助窗格。
如果您使用的不是内容窗格,则不要只是拉伸界面元素,使其填满整个区域
可用的展示空间冗长的文字难以阅读。拉伸
按钮看起来设计不合理。如果您使用 Modifier.fillMaxWidth
,请勿
假定行为适用于所有屏幕尺寸。
输入设备
用户不仅会使用触摸屏与应用互动,
自适应应用支持外接键盘、鼠标和触控笔, 增强了用户体验,并帮助用户提高 各种类型。
利用 Android 框架的内置功能, 通过键盘标签页进行导航,以及使用鼠标或触控板点击、选择和滚动。发布 键盘快捷键。
借助 Jetpack Material 3 库,用户可以向任何
TextField
组件(使用触控笔)。
不要使其他输入法无法实现。不引入无障碍功能 问题。
摘要
- 使用 Compose 和 Material 3 Adaptive 库构建应用
- 基于窗口大小类别的基本布局
- 创建多窗格布局
- 使应用尺寸可调整
- 永不锁定 activity 屏幕方向
- 不限制宽高比
- 支持除触控以外的输入
- 避免使用已废弃的 API
✓ 执行用户期望的操作: 根据用户日常生活中所用设备的多样性优化您的应用。
✗ 不等待。立即开始体验吧!