Jetpack Compose 1.0 正式版曾经公布快一年的工夫了,咱们看到社区正以极大的激情驳回和应用 Compose: Kotlin 语法的简洁性以及使开发界面变得更疾速、更简略的申明式开发方式失去了宽广开发者们的赞叹。
Compose 在社区中的反应
咱们看到 许多公司曾经在大规模驳回 Compose 为其利用开发最新、最具创造性的性能。例如,与咱们密切合作的 Play 商店团队很早便开始应用 Compose,通过他们咱们理解到,应用 Compose 不仅更乏味,且对他们团队生产力的进步也大有助益。Play 商店团队还通知咱们 “Play 商店的所有新性能都建设在该框架之上,Compose 有助于为利用解锁更快的速度以及更顺畅地公布 ”。与此同时,Twitter 也曾经在利用的不同局部应用了 Jetpack Compose 并从中受害,因为 “Compose 让咱们更容易定义本人的组件,并使它们的 API 更明确、灵便和直观。”Airbnb 团队同样也采纳了 Compose: “Jetpack Compose 是咱们技术策略的重要组成部分,生产力因而取得了大幅提高。”
咱们很快乐地看到这些团队在大规模和简单的生产环境中认真地评估并应用了 Compose,所带来的后果也不仅是让界面开发更清晰乏味,也带来了更多工程上的收益。这只是其中几个案例,因为 Play 商店排名前 1,000 的利用中有超过 100 个正在应用 Compose。
咱们在开发过程中始终保持着与这些团队的密切合作,并一直听取宽广 Android 社区的反馈,这也是咱们推动 路线图 的要害。现在,咱们专一于提供新的 API 和个性改良以反对您实现更高级的需要,这些改良将和新的工具一起助力您更轻松地应用 Compose 构建利用。Compose 从根本上扭转了界面的构建形式,为了帮忙您实现必要的思维转变,咱们将公布更多对于高级主题的指南、演讲和 Codelab,以及更具深度的视频,以便您编写外观和性能同样杰出的利用。以下是 Compose 1.2 Beta 版本的新个性:
Compose 1.2 Beta
咱们在往年的 Google I/O 大会上公布了 Compose 1.2 的第一个 Beta 版本,其中蕴含了许多个性和改良:
文本改良
字体边距
咱们在问题跟踪器中定位到了 得票最高的问题之一,并通过将 includeFontPadding
设置为自定义参数来解决它。咱们举荐您将该值设为 false
,因为这会使布局中的文本更准确地对齐。咱们打算在将来的版本中将 false
设为默认值。如果将值设为 false
导致您的利用呈现问题,请在上述错误报告中告知咱们。此外,当 includeFontPadding
被设置为 false
时,您可通过设置 lineHeightStyle
参数来调整 Text 可组合项的行高。两个参数联合应用的成果如下:
△ 以多行的 Text 可组合项为例: 左图为设置 includeFontPadding 为 true (以后默认值) 的成果,右图为设置 includeFontPadding 为 false 且设置了 lineHeightStyle 的成果
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 的新 API 来异步拜访 Google Fonts,甚至还能够定义备用字体,这些操作无需任何简单的配置。通过可下载字体,您能够放弃较小的 APK 文件体积并改善用户的零碎运行状况,因为多个利用可通过提供程序共享雷同字体。
文本放大镜
Android 文本提供了放大镜组件,通过放大镜能够更轻松地抉择文本。Compose 现已反对文本放大镜。
拖动抉择图标时会显示放大镜,以便于您查看指尖下方的内容。Compose 1.1.0 已反对在所抉择的文本字段中应用放大镜,Compose 1.2.0 在文本字段和 SelectionContainerl) 中都反对放大镜。Compose 放大镜也失去了加强以匹配 View 中放大镜的准确行为。
布局性能和改良
惰性布局
惰性布局在一直倒退,随着网格 API LazyVerticalGrid 和 LazyHorizontalGrid 顺利通过实验性应用阶段,咱们新增了一个实验性 API——LazyLayout,它容许开发者实现自定义惰性布局。想要理解这些 API 的更多信息,请观看 I /O 大会演讲: Compose 中的惰性布局。
与 CoordinatorLayout 互操作
从现在起,当您在 View 零碎的 CoordinatorLayout
中嵌套了一个反对滚动的可组合项时,您能够确保它们的滚动行为是可互操作的。这让可折叠工具栏的配置变得更加简略。您能够调用新的实验性 API rememberNestedScrollInteropConnection
,并将其调用后果传入 nestedScroll
修饰符来启用该行为,能够查看这个 示例代码理解更多:
窗口边衬区
Accompanist 中的 insets 库 现已降级到 Compose Foundation 库中,请改为应用 WindowInsets 类。如需理解更多,请查阅 将 Compose 与现有界面集成 技术文档。
窗口大小类
为了更简略地设计、开发以及测试可调整尺寸布局,咱们公布了窗口大小类——一组主观的视窗断点。它们当初作为 Material 3 系列库的一部分,在新库 material3-window-size-class 的 alpha 版本中可用。如需理解更多无关窗口大小类的信息,请查阅反对不同屏幕尺寸以及 Crane 中的示例实现。
专一于性能
为帮忙您理解和晋升利用的性能,咱们破费了大量精力为您提供新的性能工具和指南。这些内容能够帮忙您更轻松地了解利用可能呈现卡顿的起因和地位。
从 Android Studio Dolphin 开始,您能够应用 Layout Inspector 查看可组合项产生重组的频率。预期外的大量重组能够为您指明可优化的可组合项。此外,Android Studio Electric Eel 现已蕴含一个重组高亮指示器,它是一个视觉辅助工具,能够查看哪些可组合项在何时产生重组。更多对于该新工具的信息请查阅博客 Android Studio 中的新个性。
△ Layout Inspector 显示重组计数和重组高亮指示器
Compose 从根本上扭转了您编写界面的形式,您能够遵循咱们公布的最佳实际来确保利用的高性能。例如,您能够通过该 文档 理解对于如何编写和配置您的 Compose 利用以实现最佳性能的倡议。在 I/O 演讲 Jetpack Compose 中常见的性能问题 中,Compose 团队介绍了常见的性能谬误以及这些谬误的解决办法。
性能是一个须要继续关注的畛域,咱们正在致力改良并扩大相干工具和指南。同时,咱们十分感谢您对咱们迄今为止所有工作的反馈。您能够在 问题跟踪器 中提出您开发中遇到的问题,也能够在 KotlinLang Slack 群组中发问。
新工具
除了欠缺 Compose 之外,咱们还减少了新工具来帮忙您更高效地应用 Compose。Android Studio Dolphin 目前已处于 Beta 阶段,为 Compose 开发带来了十分激动人心的个性。除了重组计数,新工具还蕴含了能帮忙您一次查看和浏览所有动画的 Animation Coordination,以及能帮忙您为多个屏幕尺寸构建利用的 MultiPreview 注解。此外为了帮忙您疾速迭代,Android Studio Electric Eel (Canary 版) 还带来了 LiveEdit 这个新个性。
请查阅 I/O 演讲: Android 开发工具中的新个性 以理解所有详细信息,同时咱们心愿能失去您的反馈,从而塑造更合乎您需要的 Compose 工具。
Compose for Wear OS Beta 版公布
如果有什么比 Compose 更杰出,那就是更多更全面的 Compose。因而,咱们很快乐见证 Compose for Wear OS 进入 Beta 阶段。遵循与其余 Jetpack 库雷同的准则,Beta 意味着它的性能残缺且 API 稳固,您能够开始筹备为生产环境构建利用。如需理解更多信息,请查阅 这篇博客文章。
更欠缺的指南
咱们减少并订正了对于 Compose 的一系列指南供您参考和学习:
- 对于在 Compose 中应用状态的 研讨会 和改版的 Codelab
- 对于 Compose 中根底布局的 研讨会 和改版的 Codelab
- 全新的 Compose 性能阐明文档
- 更新的 自定义输出文档
- I/O 演讲视频: Jetpack Compose 中常见的性能问题 以及 Compose 中的惰性布局
- 对于老手开发者,可查阅 Android 根底课程: 应用 Compose
Happy Composing!
咱们期待您能像咱们一样为这些新个性感到兴奋,如果您尚未开始,那么当初正是学习 Jetpack Compose 的好时机,理解它如何适配您的团队和开发过程,这样您便能体验到提高效率和开发者生产力所带来的益处。Happy Composing!
欢迎您 点击这里 向咱们提交反馈,或分享您喜爱的内容、发现的问题。您的反馈对咱们十分重要,感谢您的反对!