news 2026/4/25 11:50:22

Compose 四月稳定版来袭,测试、触控、预览工具全线革新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Compose 四月稳定版来袭,测试、触控、预览工具全线革新

前言

Google 在 Jetpack Compose April 2026 里把Compose 1.11.0标成稳定,BOM 落到2026.04.01

这一版里,真正会立刻动到你工程的有三条线:Compose UI 测试默认走 v2 调度触控板事件按鼠标而不是假触摸、以及Shared Element / Preview / runtime 主机默认值这一圈工具链补齐。其余大量新能力还在@Experimental里,适合提前试,不适合默认进业务主干。

官方说明见:What’s new in the Jetpack Compose April '26 release。

升级BOM

Gradle 里把 BOM 指到官方给的坐标即可,其它 Compose artifact 版本交给 BOM 对齐。

dependencies{implementation(platform("androidx.compose:compose-bom:2026.04.01"))}

如果你不用 BOM,记得Foundation / UI 等同升,否则容易出现组件版本错配(这类问题排查起来很费时间)。

Compose UI 测试

Compose 1.10 里已经预告过,这次v2 testing API 直接默认启用,v1 标记弃用

差异核心是TestDispatcher:v1 用UnconfinedTestDispatcher,协程launch后几乎立刻跑完;v2 换成StandardTestDispatcher,任务先进队列,只有你推进虚拟时钟(例如advanceUntilIdle)才会执行

对工程的意义很直接:

  • • 更接近生产里的调度顺序,更容易把“靠运气通过”的竞态测挂,长期看 CI 更干净。

  • • 反过来,以前依赖“立刻执行完”的测试要改,否则升级当天就会红一片。

官方迁移文档:Testing v2 migration guide。

LookaheadAnimationVisualDebugging

SharedTransitionLayout/Modifier.animatedBounds时,匹配不到、轨迹怪、边界跳这类问题以前主要靠猜。

现在可以用LookaheadAnimationVisualDebugging包一层,直接叠一层调试信息:目标 bounds、动画轨迹、匹配数量都能看见。

LookaheadAnimationVisualDebugging(overlayColor=Color(0x4AE91E63), isEnabled=true, multipleMatchesColor=Color.Green, isShowKeylabelEnabled=false, unmatchedElementColor=Color.Red,){SharedTransitionLayout{CompositionLocalProvider(LocalSharedTransitionScope provides this){// 你的内容}}}

这类工具的价值在于:把运行时布局决策可视化,减少“动画代码写得对,但匹配条件错了”的无效排查。

基础事件归PointerType.Mouse

笔记本触控板、平板外接触控板,以前不少事件被当成PointerType.Touch的假手指,结果是按下拖动像在滚屏,选不中

1.11 把基础触控板事件对齐到PointerType.Mouse,和鼠标行为一致。平台从 API 34 起识别的双指滑动、捏合等分类,也会更自然地被Modifier.scrollableModifier.transformable吃到。

内置文本里还有一串桌面向行为:双击/三击选区、更像桌面的文本上下文菜单、拖放起始手势等,对折叠屏 + 键盘盖、Chromebook 类场景更友好。

测试侧新增了performTrackpadInput,专门用来验触控板路径。若你写了自定义手势,记得触摸 / 鼠标 / 触控板 / 笔四条线都过一遍。

Runtime:HostDefaultProvider

Compose runtime 里新增了HostDefaultProviderLocalHostDefaultProviderHostDefaultKeyViewTreeHostDefaultKey这一套。

意图很简单:库作者要在 composition 上挂主机级服务时,不必为了查默认值去依赖 compose-ui,对Kotlin Multiplatform更友好。库侧可以用compositionLocalWithHostDefaultOfCompositionLocal,默认值从 host 解析。

这条对写跨端 Compose 库的读者更关键;业务 App 多数先感知为“依赖图更干净、官方在铺 kmp 地基”。

PreviewWrapper 统一主题和预览

Studio 的Custom Previews允许你定义预览里怎么包一层再渲染

做法是实现PreviewWrapperProvider,再用@PreviewWrapper标在带@Preview/@MultiPreview@Composable上,把 Theme、Locale、假数据注入这类重复代码收敛掉。

class ThemeWrapper:PreviewWrapper{@Composable override fun Wrap(content: @Composable()->Unit){JetsnackTheme{content()}}}@PreviewWrapperProvider(ThemeWrapper::class)@Preview @Composable private funButtonPreview(){Button(onClick={}){Text(text="Demo")}}

两个API被废弃

  • Modifier.onFirstVisible()弃用:名字在 Lazy 场景里容易误解(滚动中会多次触发)。官方建议迁到Modifier.onVisibilityChanged(),自己按阈值做可见性状态。

  • ComposeFoundationFlags.isTextFieldDpadNavigationEnabled删除D-pad 在TextField里默认开启,游戏手柄 / 电视遥控器方向键先移动光标,到行尾才交焦点给下一个控件。

1.12 预告:compileSdk 37 + AGP 9

官方提前打了招呼:Compose 1.12.0 会把compileSdk抬到 37,依赖 Compose 的 App 和库会跟着继承这条要求。

这和 AGP 大版本、compileSdk 支持矩阵有关,升级前把 AGP API level support 打开对照一下,避免“只升 Compose 不升 AGP”卡死在编译期。

最后

如果你已经在 Compose 主分支上,这次升级的第一刀往往是测试:先把 v2 调度迁移跑通,再验收触控板相关交互,最后按需开实验 API。

写业务的同学优先跟BOM + 测试 + 触控板;写库和 Design System 的同学多看HostDefault + Styles + PreviewWrapper

[#JetpackCompose](javascript:😉 [#Android开发](javascript:😉 [#Kotlin](javascript:😉 [#Compose测试](javascript:😉 [#跨端UI](javascript:😉

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 11:47:24

3分钟掌握CardEditor:告别桌游卡牌设计的重复劳动

3分钟掌握CardEditor:告别桌游卡牌设计的重复劳动 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca/CardEdit…

作者头像 李华
网站建设 2026/4/25 11:44:30

CS实验室行业报告:新能源行业就业深度分析报告

CS实验室行业报告:新能源行业就业深度分析报告数据来源:麦可思《2025年中国本科生就业报告》、《中国储能产业人才发展报告》、工信部《制造业人才发展规划指南》、智联招聘《2025年人力资源市场趋势分析报告》、CSDN《2025储能人才洞察》、职友集、阳光…

作者头像 李华
网站建设 2026/4/25 11:43:29

哔咔漫画下载器:打造你的个人漫画图书馆

哔咔漫画下载器:打造你的个人漫画图书馆 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mirrors/pi/pi…

作者头像 李华
网站建设 2026/4/25 11:43:18

解决方案:MathJax 4.0高性能数学渲染架构与实施策略

解决方案:MathJax 4.0高性能数学渲染架构与实施策略 【免费下载链接】MathJax Beautiful and accessible math in all browsers 项目地址: https://gitcode.com/gh_mirrors/ma/MathJax MathJax 4.0作为业界领先的数学公式渲染解决方案,为技术团队…

作者头像 李华
网站建设 2026/4/25 11:41:10

终极图表数据提取神器:WebPlotDigitizer完整指南

终极图表数据提取神器:WebPlotDigitizer完整指南 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 你是否曾经面对一篇重要的…

作者头像 李华
网站建设 2026/4/25 11:41:02

面试官最爱问的10个C语言嵌入式面试题,附详细解析与避坑指南

嵌入式工程师必备:10个C语言面试题的深度解析与实战指南 在嵌入式系统开发领域,C语言始终占据着不可替代的核心地位。据统计,超过80%的嵌入式系统仍采用C语言作为主要开发语言,而面试过程中对C语言底层理解的考察往往成为筛选候选…

作者头像 李华