Jetpack Compose 更新一览 | 2022 Android 开发者峰会

作者 / android 开发者关系工程师 jolanda verhoef
去年我们发布了 jetpack compose,此后一直在进行优化。我们已添加了新的功能并创造出功能更强大的工具,帮助您获得更高效、更直观、更有趣的 android 界面开发体验。如果您正在开发一款新应用,那现在是时候用 compose 来编写了!这一激动人心的 compose 版本现可支持 material design 3、新的 bom (bill of materials)、稳定版 compose for wear os 和 android tv alpha 版、compose camp,以及更多新功能!
jetpack compose
https://developer.android.google.cn/jetpack/compose
稳定版 compose for wear os
https://android-developers.googleblog.com/2022/07/compose-for-wear-os-10-stable.html
社区中的 compose
去年,我们了解到许多公司在大规模使用 compose 进行开发,实现了新功能并将编译界面从 view 迁移至 compose。例如,我们在与 lyft 的工程师交谈后得知,他们超过 90% 的新功能代码是用 compose 编写而成,并且改用 compose 能够更加轻松便捷地维护代码。他们还分享道: 我们使用 compose 在应用中重新编写了按钮组件。在此之前,编写该组件需要在三个文件外加 17 个不同 xml 文件中编写 800 行代码,而现在减少到只需一个 kotlin 文件和 300 行代码即可完成。单就 kotlin 代码而言,工作量就减少了 60%。zepeto 团队同样已在多个功能中使用 compose,并从中受益,因为 compose 简化了我们的界面层逻辑,有助于我们更轻松地理解同事所编写的代码。
△ jetpack compose 帮助 lyft 更加轻松便捷地维护代码 | android 开发故事  
大规模使用 compose 进行开发
https://developer.android.google.cn/jetpack/compose/adopt#what-developers-are-saying
改用 compose 使 lyft 团队能够更加轻松便捷地维护代码
https://android-developers.googleblog.com/2022/10/lyft-reduced-their-code-for-ui-components-using-jetpack-compose.html
有助于 zepeto 团队更轻松地理解同事所编写的代码
https://android-developers.googleblog.com/2022/10/zepeto-plans-to-migrate-80-percent-of-apps-ui-to-jetpack-compose.html
很高兴看到这些团队能够缩短开发周期,编写更加简洁易读的界面代码。他们并不是个例。在今年的 google i/o 大会过后,google play 上排名前 1,000 的应用中使用 compose 的数量增加了 50%!为了帮助您的团队追随 lyft、zepeto 和其他团队的脚步,我们发布了关于如何在您的团队中采用 compose 的指南。该指南为您介绍如何以及从何处着手,并展示了 compose 能够带来巨大附加价值的开发领域。   如何在您的团队中采用 compose 的指南
https://developer.android.google.cn/jetpack/compose/adopt/for-large-teams
jetpack compose 2022 年 10 月版发布
  现在,我们发布了全新的稳定版 compose,并为您介绍一些激动人心的功能和最新资讯。
首先,根据用户反馈,我们了解到追踪不同工件的版本会让人望而生畏,因为这些工件可能出现在不同的发布时间表中。因此我们现将一同发布 bill of materials 功能,即 bom,包含所有 compose 工件的稳定版本,让您能够更轻松地使用。
首版 bom 发布的同时,compose 2022 年 10 月版也带来了交错网格支持、直接在画布中绘制文本,下拉刷新,同时包含性能改进和问题修复。
  compose bom
bom 是一个 maven 模块,用于声明一组内容库及其版本。这将很大程度上简化您在 gradle 依赖项部分定义 compose 内容库版本的方式,尤其是在我们对不同的 jetpack compose 内容库采用独立版本的情况下。您不用再单独定义每个版本,这一过程往往繁重且容易在内容库版本出现不同时出错,现在您只需定义一个 bom 版本,就能够从中提取所有 compose 内容库版本。每当 compose 工件有新的稳定版本时,我们就会发布新的 bom 版本,因此可更轻松地从一个稳定版转移到另一个稳定版。
dependencies { // 导入 compose bom implementation platform('androidx.compose2022.10.00') // 为尚未标明版本的目标 compose 库声明依赖项 implementation 'androidx.compose.foundation:foundation' androidtestimplementation 'androidx.compose.ui:ui-test-junit4' ...}  
对不同的 jetpack compose 内容库采用独立版本
https://android-developers.googleblog.com/2022/06/independent-versioning-of-jetpack-compose-libraries.html
我们已在快速入门指南中增加关于如何添加 compose bom 的说明。请注意,您仍可以选择使用硬编码版本来定义您的依赖项。添加 bom 这一实用方式是为了简化依赖项并让升级变得更加容易。  
快速入门指南
https://developer.android.google.cn/jetpack/compose/setup
深入了解修饰符
一直以来,我们都在幕后努力优化 compose 性能。compose 2022 年 10 月版本包括对修饰符工作原理的重大重构。尽管您可能不会在 api 中注意到任何更改,但此次重构会为修饰符性能的重大改进铺平道路。您可以通过下方视频详细了解更改背后的基本原理,以及在 ads 演讲 compose 修饰符深入研究中规划的内容。 △ compose 修饰符深入研究 | 2022 android 开发者峰会
compose 修饰符深入研究
https://developer.android.google.cn/events/dev-summit/technical-talks
弹出式窗口和对话框高度更改  无障碍功能始终是 compose 中至关重要的存在,此版本包含一个行为变更,有助于修复采用弹出式窗口和对话框的无障碍功能错误: 弹出式窗口和对话框的最大高度由 30dp 下降到 8dp。只有在使用高度超过 8dp 的自定义对话框或弹出式窗口时,您的应用才会受到影响。您可以参阅版本说明,了解有关变更的更多详情,比如为临时解决方案覆盖新行为的方法 (请注意,对于自定义弹出式窗口和对话框,我们始终推荐高度不超过 8dp)。  
版本说明
https://developer.android.google.cn/jetpack/androidx/releases/compose-ui
 新功能   我们在 compose 中添加了许多新功能。部分重要内容如下:
使用全新 lazyhorizontalstaggeredgrid 和 lazyverticalstaggeredgrid 实现交错网格; 使用 drawscope.drawtext 直接在画布中绘制文本; 使用 fontvariation 对象在应用中添加可变字体并更改其属性; 在带注释的字符串中添加 urlannotation 以改进与文本互动的无障碍服务; 使用全新 linebreak api 在您的文本中添加断字功能; 使用全新 pullrefresh 修饰符下拉刷新; 使用 snapflingbehavior 在您的惰性列表中添加贴靠行为; lookaheadlayout 是一种新的布局类型,可以提供关于子项的最终测量与放置信息,帮助您决定中间层布局。  
lazyhorizontalstaggeredgrid
http://link.gevents.cn/dyyk4w
lazyverticalstaggeredgrid
http://link.gevents.cn/gvihf9
fontvariation
https://developer.android.google.cn/reference/kotlin/androidx/compose/ui/text/font/fontvariation
可变字体
https://fonts.google.com/knowledge/topics/variable_fonts
urlannotation
https://developer.android.google.cn/reference/kotlin/androidx/compose/ui/text/urlannotation
linebreak
https://developer.android.google.cn/reference/kotlin/androidx/compose/ui/text/style/linebreak
pullrefresh
http://link.gevents.cn/taa2d2
下拉刷新
https://material.io/design/platform-guidance/android-swipe-to-refresh
snapflingbehavior
https://developer.android.google.cn/reference/kotlin/androidx/compose/foundation/gestures/snapping/snapflingbehavior
lookaheadlayout
http://link.gevents.cn/etyatk
compose material 3 稳定版
  我们还推出了 compose material 3 内容库的第一个稳定版本!您可以使用 compose 构建应用,并根据 material design 的最新版本 material design 3 设置主题。使用 material design 3 进一步自定义您应用的颜色、排版和外观,帮助您的品牌脱颖而出!内容库包含许多界面组件的全新和更新版本,例如按钮、卡片、复选框、开关、导航栏、抽屉式导航栏等,并支持其他即将推出的更新。您可以前往官方文档,查看受支持的所有组件列表,也可以在我们近期的推文中了解详情。
  compose material 3 内容库
https://developer.android.google.cn/jetpack/androidx/releases/compose-material3
material design 3
https://m3.material.io/
官方文档
https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary#overview
您可以查看我们新的迁移指南,帮助您使用 material 3,我们在指南中清楚地介绍了如何将 material 2 概念转化成 material 3。android studio flamingo 中的默认模板现在会使用 material 3 来指引您即时正常运行。我们还更新了许多示例应用、教程、模板和 codelab 以助您轻松使用 material 3,方便您在实践中学习!
迁移指南
https://developer.android.google.cn/jetpack/compose/themes/material2-material3
新工具
 使用 jetpack compose 中全新的和已优化的工具可简化应用开发。我们在 android studio 中添加了大量新功能,帮助您改进工作流程,提高效率:  最新的稳定版 android studio dolphin 可以为您带来如下功能: 动画协调
multipreview 注释 布局检查器中的重组计数  
android studio dolphin
https://developer.android.google.cn/studio/releases#new_in_compose
 android studio electric eel 内含 beta 版功能,如: 实时编辑 (实验性)
突出显示组合渲染效果
配置预览版设备
预览版中的 live updates
android studio electric eel
https://developer.android.google.cn/studio/preview/features#2022.1.1
  android studio flamingo 内含 canary 版功能,比如:
新项目模板默认使用 compose 和 material 3 默认开启实时编辑 改进后的组合跟踪,助您更好地检查性能问题。   android studio flamingo
https://developer.android.google.cn/studio/preview/features#2022.2.1
 relay   我们还发布了 relay 的首个 alpha 版本,作为设计稿转代码的解决方案,可优化设计者与开发者之间的协作。设计者使用 figma 插件创建界面组件,开发者则使用 android studio 插件将这些组件自动应用到他们的应用中。生成的组件是可组合函数,并可直接被集成到您的 compose 应用中。您可以查看官方文档,详细了解 relay。
relay
https://relay.material.io/
figma 插件
https://www.figma.com/community/plugin/1041056822461507786
android studio 插件https://plugins.jetbrains.com/plugin/19721-relay-for-android-studio/ 官方文档https://developer.android.google.cn/jetpack/compose/tooling/relay     面向 wear os、大屏幕设备和电视的 compose
  我们在 7 月发布了首个稳定版 compose for wear os,可随时在生产环境中使用。推荐您使用 compose for wear os 来为 wear os 应用构建界面。我们在其中加入了二十余种专为可穿戴设备设计的 compose 界面组件,如 timetextpositionindicator,以及 scalinglazycolumn。
  compose for wear os
https://android-developers.googleblog.com/2022/07/compose-for-wear-os-10-stable.html
我们将持续改进,使其更易于为可折叠设备、平板电脑等大屏幕设备和 chromeos 设计、开发和测试应用。material3-window-size-class 内容库已升级为稳定版,为您提供了一组可供使用的视口划分点。大屏幕设备设计通常包含交错网格,新增的 lazyhorizontalstaggeredgrid 和 lazyverticalstaggeredgrid 有助于实现这些网格。
  material3-window-size-class
https://developer.android.google.cn/jetpack/androidx/releases/compose-material3
lazyhorizontalstaggeredgrid
http://link.gevents.cn/dyyk4w
lazyverticalstaggeredgrid
http://link.gevents.cn/gvihf9
  android 社区的反馈一直推动我们继续向前。我们根据您的反馈更新了路线图,更加侧重于能够帮助您成功使用 compose 的领域。现在我们正专注于支持更多案例,包括更多 material 3 组件,改进平台支持、工具和性能。
  路线图
https://developer.android.google.cn/jetpack/androidx/compose-roadmap
全新的和更新后的指南
  无论您处于学习旅程的哪个阶段,我们都会为您提供帮助!我们新增和优化了有关 compose 的许多指南:
如果想要体验实践操作,您可以参阅更新后的面向 android 开发者的 compose 课程。这一课程涵盖了多种主题,从基础知识到进阶内容,一应俱全。 如果您更喜欢观看视频,可查看 mad 技巧: compose 基础知识系列视频,当然,您也可以观看 android 开发者峰会中有关 compose 的所有技术分享内容。 您可以阅读有关图像和图形的扩展文档。 想知道使用哪种动画?答案尽在全新的动画备忘单中! 通过全新的调试重组截屏视频和博文,了解如何发现并修复性能问题。 如果考虑在您的现有应用中采用 compose,您可以参阅扩展版指南: 在应用中采用 compose。   面向 android 开发者的 compose 课程
https://developer.android.google.cn/courses/jetpack-compose/course
mad 技巧: compose 基础知识
https://youtube.com/playlist?list=plwz5rj2ekkc-cg9riunk996ai6crhxfdc
android 开发者峰会
https://developer.android.google.cn/events/dev-summit/technical-talks#modern-android-development
图像和图形
https://developer.android.google.cn/jetpack/compose/graphics
动画备忘单
https://storage.googleapis.com/android-stories/compose/compose_animation_cheat_sheet.pdf
截屏视频
https://www.youtube.com/watch?v=swbn0y0lfny
调试重组博文
https://medium.com/androiddevelopers/jetpack-compose-debugging-recomposition-bfcf4a6f8d37
在应用中采用 compose
https://developer.android.google.cn/jetpack/compose/interop
    compose camp
   compose camp 是一个由社区组织的全球系列活动,该活动将从九月一直持续到十二月!compose camp 同时包含初学者路径和资深者路径,所有水平的开发者均可加入一同学习。活动已在如火如荼地进行中,全球各地的 gdg 和 gdsc 发布了多支视频,社区平台也举办了众多活动。  
compose camp
https://developer.android.google.cn/compose-camp
如火如荼地进行中
https://twitter.com/search?q=%23composecamp&src=typeahead_click
视频
https://space.bilibili.com/64169458/channel/collectiondetail?sid=735148
    祝您拥有愉快的 compose 使用体验!
  希望您和我们一样对这些进展感到兴奋!如果您尚未开始,现在就是学习 jetpack compose,并帮助您的团队和开发流程从中受益的最佳时机。准备好体验更快的开发速度和更高的工作效率吧。祝您拥有愉快的 compose 使用体验!也欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。
  jetpack compose
https://developer.android.google.cn/jetpack/compose
点击屏末 | 阅读原文 | 即刻了解 jetpack compose 更多相关内容
原文标题:jetpack compose 更新一览 | 2022 android 开发者峰会
文章出处:【微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

企业部署私有云的优势
《中国“智能+”社会发展指数报告2020》解读 显著带动产业发展
5G+AIoT为智能家居带来新突破
超感光微云台 夜色更精彩 vivo X50 Pro开售1天倒计时
简析报警电路的工作原理
Jetpack Compose 更新一览 | 2022 Android 开发者峰会
如何轻松稳定带感性开环输出阻抗的运算放大器?
芝加哥大学提出了一种新方法,可以通过声波实现不同类型量子技术间的互相“交谈”
购买二手空调可能会出现的问题盘点 看过后你再决定买不买吧
HKHC45/14电流互感器
中国移动将逐步引入i-RRM特性,实现无线能力开放和无线网络协同
【虹科方案】TigerSeriesSharedStoragTiger系列共享存储
深度剖析知识图谱落地的基本原则与最佳实践
pcb版图设计工具
基于STM32的DHT11温湿度数据采集仿真设计
AWS,Azure和Google Cloud在云中可用的当前服务
软通动力与广邮合作打造软件基础人才培养职业教育高地
海富思科技:HFS720P系列高清模组特点及功能描述
关于弹片微针模组在手机摄像头性能测试中的应用
汽车软件单元测试的要点与意义