作者 / Android 开发者关系工程师 Florina Muntenescu
我们一如既往地搭建 产品路线图,现在已经发布了 Jetpack Compose 的 1.1 版本,这是 Android 的现代原生界面工具包。此版本新增了一些功能,比如经过优化的焦点处理、触摸目标值、ImageVector 缓存,和对 Android 12 拉伸滚动的支持。Compose 1.1 还让许多之前的实验性 API 过渡到了稳定阶段,并支持新版 Kotlin。我们已经更新了 示例、Codelab 和 Accompanist 开发库,以便您与 Compose 1.1 搭配使用。
全新稳定功能和 API
图像矢量 (Image vector) 缓存
Compose 1.1 引入了图像矢量 (Image vector) 缓存,带来了巨大的性能改进。我们为 painterResource
API 添加了缓存机制,以缓存所有使用给定资源 ID 和主题解析的 ImageVectors
实例。缓存将在配置更改时失效。
触摸目标值
相对于 Compose 1.0,Material 组件将扩展其布局空间来满足 Material 无障碍指南 的 触摸目标值 要求。例如,即使您调低 RadioButton
的大小,RadioButton's
触摸目标的尺寸仍将扩展为至少 48x48dp。这将使得 Compose Material 与 Material Design 组件的行为保持一致,以便在混合使用 View 和 Compose 时提供一致的行为。此更改还可确保当您使用 Compose Material 组件创建界面时,能够满足触摸目标无障碍功能的最低要求。
如果您发现此更改破坏了现有的布局逻辑,请将 LocalMinimumTouchTargetEnforcement 设置为 false 来禁用此行为,但此操作可能会降低应用的可用性,因此需要您格外注意,并谨慎使用。
从实验版到稳定版的 API
一些 API 从实验版过渡到了稳定版。主要包括:
- 动画相关 API,例如: EnterTransition、ExitTransition、一些 AnimatedVisibility API
- 矢量相关 API: rememberVectorPainter、VectorProperty、VectorConfig 和 RenderVectorGroup
全新实验版 API
我们一直在为 Compose 添加新功能,包括以下亮点:
- 您使用
rememberSaveable
的同时,可以保存和恢复AnimatedContent
。 - 您可以使用 Modifier.animateItemPlacement() 为
LazyColumn/LazyRow
项目位置进行动画处理。 - 您可以使用全新
BringIntoView
API 向父级发送请求,以便父级滚动,将项目引入视图。
您可以使用 @OptIn 以试用这些全新的 API,并向我们提供反馈!
注意: 使用 Compose 1.1 需要使用 Kotlin 1.6.10。如需了解更多信息,您可以查看 Compose 与 Kotlin 的兼容性对应关系。
想知道未来计划?您可以查看 最新路线图,了解我们目前正在评估和开发的功能,比如延迟加载项目动画、可下载的字体、可移动的内容等等!
Jetpack Compose 现已推出稳定版本,供大家在生产环境中使用,并且会继续添加您想要的功能。我们很高兴看到成千上万的应用已经开始在生产环境中使用 Jetpack Compose,我们迫不及待想看到您将构建的应用!
我们很感激开发者们在 Alpha 版和 Beta 版期间,通过 问题跟踪页 提交的错误报告和功能请求,帮助我们改进了 Compose 并构建您需要的 API。欢迎您继续与我们分享您的反馈,帮助我们让 Compose 变得更好!也欢迎您持续关注 "Android 开发者" 微信公众号了解更多最新内容。
欢迎您 点击这里 向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!