谷歌宣布推出 Jetpack Compose 1.2 Beta,其中包含了许多功能和改进。具体更新内容如下:
文本改进
字体填充
开发团队通过制作可自定义的参数解决了 issue tracker 中投票最多的错误之一。使includeFontPadding
成为一个可定制的参数。官方建议将此值设置为false
,可使布局中的文本更精确地对齐。其标是最终将其设为未来版本中的默认值。当includeFontPadding
设置为时false
,用户可以通过设置lineHeightStyle
参数来调整 Text composable 的行高。结合起来可以是这样的:
Text( text = myText, style = TextStyle( lineHeight = 2.5.em, platformStyle = PlatformTextStyle( includeFontPadding = false ), lineHeightStyle = LineHeightStyle( alignment = Alignment.Center, trim = Trim.None ) ) )
可下载字体
Compose 1.2 还在 Compose 中引入了可下载字体。你可以使用 Compose 的新 API 来异步访问 Google 字体,甚至可以定义备用字体,而无需任何复杂的设置。有了可下载字体,你可以保持较小的 APK 大小并改善用户的系统运行状况,因为多个应用程序可以通过提供商共享相同的字体。
文字放大镜
Android 文本提供了一个放大镜小部件,可以更轻松地选择文本。Compose 现在支持文本放大镜。
布局功能和改进
Lazy Layouts
Lazy Layouts 继续发展,随着网格 APILazyVerticalGrid
和LazyHorizontalGrid
实验性的毕业,一个新的实验性 API 被添加,称为LazyLayout
,它允许你实现自己的自定义 Lazy Layouts。在 I/O 演讲中了解有关这些 API 的更多信息 Compose 中的 Lazy Layouts。
与 CoordinatorLayout 互操作
当你在视图系统中的 CoordinatorLayout 中嵌入一个滚动的 composable 时,你现在可以确保它们的滚动行为是可互操作的。这使得可折叠的工具条的设置更加容易。你可以通过将调用新的实验性的 rememberNestedScrollInteropConnection 方法的结果传递给 nestedScroll 修改器来选择这种行为。这是一个演示此新功能的示例。
Window insets
Accompanist 中的插件库现在已经升级到 Compose Foundation 库,使用 WindowInsets 类。在关于将 Compose 与现有 UI 集成的文档中阅读有关它的更多信息。
Window size classes
为了更容易设计、开发和测试可调整大小的布局,官方发布了 Window size classes - 一组 opinionated viewport breakpoints。它们现在在一个新的库 material3-window-size-class 中以 alpha 形式提供,作为 Material 3 库集的一部分。你可以在支持不同的 screen sizes 文档中阅读有关 size classes 的更多信息,并查看 Crane 中的示例实现。
专注于性能
从 Android Studio Dolphin 开始,你可以使用 Layout Inspector 检查可组合项重组的频率。此外,Android Studio Electric Eel 现在包括一个 recomposition highlighter,这是一个用于查看哪些可组合项何时重组的视觉辅助工具。在 Android Studio 的新增功能博客中阅读有关此新工具的更多信息。
Compose 从根本上改变了你编写 UI 的方式,因此你可以采用一些最佳实践来确保你的应用程序是高性能的。新发布的文档页面建议如何编写和配置你的 Compose 应用程序以获得最佳性能。
新工具
除了改进之外,还有新的工具更新可帮助您更有效地使用 Compose。Android Studio Dolphin 现在处于 Beta 版,为 Compose 开发带来了令人兴奋的功能。除了重新合成计数之外,新工具还包括动画协调,以便你可以一次查看和浏览所有动画,以及多预览注释,以帮助你构建多种屏幕尺寸。为了使你能够更快地迭代 Android Studio Electric Eel(在 Canary 中)带来了 LiveEdit。
Compose for Wear OS
适用于 Wear OS 的 Compose 进入 Beta 版,意味着它的功能完整,API 稳定,你可以开始构建你的生产就绪的应用程序。详情可阅读 blog post。