动画实现更简单,Navigation Compose 帮您忙

Jetpack Compose的Navigation Compose简化了动画实现,提供了页面过渡的解决方案。随着Compose版本的更新,动画API逐渐稳定,实验性API可能在后续版本中变化。Navigation 2.4稳定版依赖于Compose 1.0.1的稳定动画API,而Accompanist Navigation Animation库则提供了更丰富的动画控制。随着Compose 1.1及更高版本的发展,未来将支持共享元素过渡,进一步提升Navigation Compose的动画功能。
摘要由CSDN通过智能技术生成

Jetpack Compose 将动画实现的门槛降低了——从 "如果有时间再慢慢打磨" 到 "动画实现很简单,没有理由不试试看了"。这里有个很大的课题是页面级的过渡动画,这也是 Navigation Compose 一直致力解决的问题,具体是满足下面三种场景: 

  • 仅使用 Compose 1.0.0 中稳定的动画 API

  • 开始对 Compose 1.0.0 中存在的实验性动画 API 提供支持

  • 构建在 Compose 1.1.0 及更高版本中面向未来的动画 API (共享元素过渡)

  • Navigation Compose
    https://developer.android.google.cn/jetpack/compose/navigation

每一种情况的实现方法都稍有不同,我们将在本文中介绍。

Compose ???? 动画

从首次发布 Jetpack Compose 0.1.0-dev01 到最新的 Compose 1.0.1,经历了漫长的过程。相对于 View 系统而言,它巨大的改进之一便是动画和过渡。在追求完美的动画 API 的过程中,对 Compose 进行了大量的修改才一步步迭代到版本 1.0.0

虽然许多底层的动画 API,比如非常强大的 animateTo() 和 animate*AsState() 到目前为止是 Compose 稳定的基础构成部分,但仍有许多基于这些代码构建的 API 被标记为 @ExperimentalAnimationApi。

实验性 API 和语义化版本控制

实验性 API (任何在 Kotlin 领域使用 @RequiresOptIn 注解的 API) 可能随时会被更改。这意味着这些 API 可能在未来任一版本 (可能是 Compose 1.1.0-alpha04 或者 1.2.0-alpha08) 中被更改、优化或替换。因此,如果您使用了任何一个基于这些实验性 API 构建的库,当您更新了您使用的 Compose 版本但没有同时更新这些库的版本时,这些库可能会直接崩溃并构建失败。(如果您使用了早期发布的 Compose 版本,您就会知道这种痛苦。)

所有 AndroidX 库 (包括 Navigation 和 Compose),都遵循严格的语义化版本控制,如 AndroidX 版本页面所述。这意味着一旦某个库迭代至候选版本 (Release Candidate,即 RC),任何非实验性 API 将不会再被更改。对这些稳定的 API 进行破坏性变更需要增加主版本号 (如,'2.0')。

  • 严格的语义化版本控制
    https://semver.org/

  • AndroidX 版本页面
    https://developer.android.google.cn/jetpack/androidx/versions

这对向前和向后兼容很友好。例如,您可以升级 Fragment 版本以尝试新的 alpha 内容,同时将其他依赖项保持在其稳定版本上,一切工作如常。

然而,这也意味着严格禁止实验性 API (即可以从您底层移除的 API) 跨越不同的库使用。例如,升级您的 androidx.fragment 版本不应该破坏 androidx.appcompat。这一规则同样应用于 androidx.navigation 和 androidx.compose.animation。

使 Navigation 2.4 稳定

Navigation 2.4 是一个重要的版本,它既是第一个 Navigation Compose 版本,也是第一个对 Navigation Compose 和带有 Fragment 的 Navigation 支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值