Jetpack Compose 1.8 新增了 12 个新特性

Jetpack Compose 1.8: 12项新功能将彻底改变你构建用户界面的方式

迄今为止最大的Compose更新带来了原生自动填充, 智能动画以及让构建Android用户界面如同魔法般轻松的功能

你是否曾希望文本字段能自动填充? 或者动画能预测未来? Jetpack Compose 1.8 刚刚发布,其中包含听起来像科幻小说但实际运作如日常魔法般流畅的功能.

本次更新包含自动填充, 文本优化, 可见性追踪,以及调整@Composable大小和位置的新动画方式. 但最值得关注的是: Compose 团队已将实验性 API 从 1.7 版本的 172 个减少到 1.8 版本的 70 个------实验性 API 数量几乎减少了 50%. 你的代码现在稳定性大幅提升.

自动填充革命: 因为没人喜欢手动输入密码

还记得上次在移动设备上手动输入邮箱和密码的经历吗? 痛苦吧? Compose 1.8 终于带来了真正可用的原生自动填充支持.

自动填充是一项简化数据输入的服务. 它允许用户无需手动输入每个细节即可填写表单, 登录界面和结账流程.

现在它有多简单:

ini 复制代码
TextField(
    state = rememberTextFieldState(),
    modifier = Modifier.semantics { 
        contentType = ContentType.Username 
    }
)

就只有这些. 只需指定一个 contentType,Compose 就会处理剩下的部分------即使你的应用在后台运行. 自动填充框架会自动用黄色背景突出显示已填充的字段,就像在 View 系统中一样.

但等等,还有更多. 你可以处理多种内容类型,甚至在自动填充发生时获得回调:

ini 复制代码
Switch(
    modifier = Modifier.semantics {
        contentType = ContentType.EmailAddress
        onAutofillText { text ->
            firstLetterE = text.startsWith("E", ignoreCase = true)
            true
        }
    },
    checked = firstLetterE,
    onCheckedChange = { firstLetterE = it }
)

真正适配的文本: AutoSize 变革者

你是否曾因文本在不同屏幕尺寸下被截断或显示过小而烦恼? 这些日子将要一去不复返了.

BasicText 中,当将文本放置于容器内时,可使用 autoSize 参数,使文本自动适配容器大小.

ini 复制代码
BasicText(
    text = "This text will magically resize itself!",
    maxLines = 1,
    autoSize = TextAutoSize.StepBased(
        minFontSize = 12.sp,
        maxFontSize = 24.sp,
        stepSize = 2.sp
    )
)

你的文本现在会自行调整大小. 无需手动计算字体大小或复杂的响应式设计逻辑. 只需设置约束条件,即可见证魔法发生.

智能省略号: 当文本变得富有创意

是否希望在文本开头或中间显示省略号,而不仅仅是结尾? Compose 1.8 通过新增 TextOverflow.StartEllipsisTextOverflow.MiddleEllipsis 选项,允许你在文本行开头或中间显示省略号.

ini 复制代码
Text(
    text = "This is a very long text that will show ellipsis in the middle",
    overflow = TextOverflow.MiddleEllipsis,
    maxLines = 1
)

现在你的文件路径和长用户名可以更智能地显示.

预测未来的动画

如果你的动画能预见未来会怎样? 借助 LookaheadScope 中的新 Modifier.animateBounds,它们确实可以做到.

1.8 动画模块将 LookaheadScope 升级为稳定版本,包含多项性能和稳定性改进,并新增了 Modifier.animateBounds.

less 复制代码
LookaheadScope {
    Box(
        Modifier
            .width(if(expanded) 180.dp else 110.dp)
            .offset(x = if (expanded) 0.dp else 100.dp)
            .animateBounds(lookaheadScope = this@LookaheadScope)
            .background(Color.LightGray, shape = RoundedCornerShape(12.dp))
            .height(50.dp)
    ) {
        Text("Layout Content", Modifier.align(Alignment.Center))
    }
}

Modifier可自动动画化大小和位置变化. 无需手动设置动画,无需复杂状态管理. 只需平滑, 预测性的动画,它们在到达目标位置前就已知晓方向.

可见性追踪: 终于知道用户实际看到的内容

厌倦了使用临时解决方案来追踪@Composable是否可见? Compose UI 1.8 中引入了新的Modifier onLayRectChanged,它解决了 onGloballyPositioned 无法处理的多个用例,且开销更低.

这解锁了强大的功能,例如:

  • 分析追踪用户实际看到的界面
  • 性能优化屏幕外内容
  • 智能加载图片和视频
  • 广告展示追踪

此新 API 解锁了依赖于@Composable屏幕可见性的功能. Compose 1.9 将为该低级 API 添加更高层次的抽象,以简化常见用例.

触觉反馈功能升级

希望应用程序响应更灵敏? Compose 1.8 支持更多类型的触觉反馈: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey.

ini 复制代码
val haptics = LocalHapticFeedback.current

Button(
    onClick = { 
        haptics.performHapticFeedback(HapticFeedbackType.Confirm)
        // Handle click
    }
) {
    Text("Tap me!")
}

你的按钮, 开关和手势现在拥有触觉反馈,让交互体验更显高端.

真正有效的焦点管理

使用键盘和辅助工具进行导航变得更加顺畅. 多焦点 API 现已稳定,包括 Modifier.focusRestorer(), onEnteronExit FocusProperties. 你现在可以在调用 requestFocus 时指定 FocusDirection.

这意味着:

  • 更好的电视应用支持,支持方向导航
  • 改进的辅助功能,支持屏幕阅读器
  • 更智能的焦点恢复,当从其他屏幕返回时

你将真正感受到的性能提升

最新稳定版本包含对多个子系统(包括语义, 焦点和文本优化)的重大重写和改进. 最棒的是,你只需升级 Compose 依赖项即可获得这些功能,无需进行任何代码更改.

Compose 团队在后台进行了大量工作:

  • 更快的文本渲染,支持后台预加载
  • 更智能的懒加载布局预加载
  • 可暂停的合成,将工作负载分布到多个帧
  • 减少卡顿,提升滚动和动画流畅性

AnnotatedString中的HTML支持

需要从后端显示富文本? AnnotatedString中的HTML格式支持已扩展,现在你可以直接在Compose中处理更多HTML格式,无需复杂解析.

现代 Android 的对话框改进

全屏对话框现在会显示在系统栏之后. 你的对话框现在看起来现代且 edge-to-edge,就像用户期望的现代 Android 应用一样.

辅助功能测试实现自动化

构建可访问的应用程序现在更容易,因为测试中内置了辅助功能检查. 测试中的辅助功能检查使你能够通过自动化的辅助功能测试构建更可访问的应用程序 UI. 在用户发现之前识别无障碍问题.

API 稳定性: 基础架构更加强固

最大的新闻可能是最无聊的. Compose 团队正在积极稳定现有实验性 API------在 UI 和基础模块中,Compose 团队已将实验性 API 从 1.7 版本的 172 个减少到 1.8 版本的 70 个.

这意味着:

  • 未来的更新中破坏性更改会更少
  • 生产代码中更高的可靠性
  • 新功能的更快采用

部分 API 已被废弃(ContextualFlowRowContextualFlowColumn),但 FlowRowFlowColumn 现已稳定且性能更佳.

核心要点: 为何这至关重要

Jetpack Compose 1.8 不仅仅是又一次更新------它是 Compose 真正成为任何应用生产就绪的时刻. 凭借原生自动填充, 预测性动画和坚如磐石的 API 稳定性,现在正是全面采用 Compose 的最佳时机.

仅开发者体验的改进------从自动文本缩放到无缝自动填充------就能节省你大量重复代码的时间. 但真正的收益在于用户体验: 更流畅的动画, 更好的无障碍支持,以及用户对现代 Android 应用所期待的精良交互.

要开始使用,只需更新你的 BOM:

less 复制代码
implementation(platform("androidx.compose:compose-bom:2025.04.01"))

你最期待尝试 Compose 1.8 的哪个功能?

好吧, 今天的内容就分享到这里啦!

一家之言, 欢迎拍砖!

Happy Coding! Stay GOLDEN!

相关推荐
inmK12 小时前
蓝奏云官方版不好用?蓝云最后一版实测:轻量化 + 不限速(避更新坑) 蓝云、蓝奏云第三方安卓版、蓝云最后一版、蓝奏云无广告管理工具、安卓网盘轻量化 APP
android·工具·网盘工具
giaoho2 小时前
Android 热点开发的相关api总结
android
咖啡の猫3 小时前
Android开发-常用布局
android·gitee
程序员老刘4 小时前
Google突然“变脸“,2026年要给全球开发者上“紧箍咒“?
android·flutter·客户端
Tans54 小时前
Androidx Lifecycle 源码阅读笔记
android·android jetpack·源码阅读
雨白4 小时前
实现双向滑动的 ScalableImageView(下)
android
峥嵘life5 小时前
Android Studio新版本编译release版本apk实现
android·ide·android studio
studyForMokey7 小时前
【Android 消息机制】Handler
android
敲代码的鱼哇7 小时前
跳转原生系统设置插件 支持安卓/iOS/鸿蒙UTS组件
android·ios·harmonyos
翻滚丷大头鱼7 小时前
android View详解—动画
android