0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全新导航库Jetpack Navigation 3发布

谷歌开发者 ? 来源:谷歌开发者 ? 2025-08-06 13:56 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者 / 开发者关系工程师 Don Turner

在应用中的不同屏幕之间导航理应简单明了。然而,构建稳健、可扩展且赏心悦目的导航体验却并非易事。多年来,Jetpack Navigation 库一直是开发者的重要工具,但随着 Android 界面格局的演变,尤其是 Jetpack Compose 的兴起,我们意识到是时候探索一种全新的解决方案了。

我们将在本文为您介绍新推出的 Jetpack Navigation 3,这是一个专为 Compose 打造的全新导航库。为简洁起见,我们将其简称为 Nav3。这个库采用了声明式编程模型和 Compose 状态作为其基本构建模块。

为什么要推出新的导航库?

之前的 Jetpack Navigation 库 (有时也称为 Nav2,因为它是第二个主版本) 最初是在 2018 年发布的,彼时还没有 AndroidX 和 Compose 这两个框架。虽然 Nav2 已经很好地实现了最初目标,但我们了解到,在与现代 Compose 开发模式结合使用时,Nav2 存在一些限制。

其中一个关键的限制是仅支持间接观察返回堆栈状态。这意味着可能存在两个事实来源,从而导致应用状态出现不一致的情况。此外,Nav2 的 NavHost 被设计为仅显示一个目标位置 (即返回堆栈中的最顶层目标位置) 以填充可用空间。这使得实现同时显示多个内容窗格的自适应布局 (例如大屏幕上的列表-详情布局) 变得困难。

创立原则

Nav3 基于以下原则构建而成,旨在提供更大的灵活性并提高开发者掌控力:

您掌控返回堆栈: 作为开发者,您将拥有并控制返回堆栈,而不是将控制权交给库。这是一个简单的列表,由 Compose 状态支持。具体而言,Nav3 期望您的返回堆栈为 SnapshotStateList,其中 T 可以是您选择的任何类型。您可以通过添加或删除项目 (T) 来进行导航,状态的变化会被 Nav3 的界面观测到,并自动反映在其界面上。

告别繁琐: 我们深知您不喜欢导航库具有无法访问的内部组件和状态的 "黑匣子" 式设计。Nav3 的设计秉承开放性和可扩展性原则,为您提供构建模块和实用的默认设置。如果您想要自定义导航行为,可以深入到更低的层级,创建您自己的组件和自定义设置。

选择您的构建模块: Nav3 并没有将所有行为嵌入到库中,而是提供了更小巧的组件,您可以组合这些组件来创建更复杂的功能。我们还准备了操作指南,其中介绍了如何组合组件来解决常见的导航挑战。

关键功能

动画: 内置的过渡动画可用于实现目标位置的切换,包括预测性返回。此外,它还拥有支持自定义动画行为的灵活 API,允许在应用和单个屏幕级别覆写动画。

自适应布局: 通过使用灵活布局 API (名为 Scenes),您可在同一布局中渲染多个目标位置 (例如,大屏设备上的列表-详情布局)。您可借此轻松地在单窗格和多窗格布局之间切换。

状态范围限定: 能够将状态限定在返回堆栈中的目标位置范围内,同时还可通过专用 Jetpack lifecycle 库提供可选的 ViewModel 支持。

模块化: API 设计允许将导航代码拆分到多个模块中。这缩短了构建时间并使各个功能模块之间的职责划分更加清晰。

基本代码示例

为了帮助您了解 Nav3 的工作原理,我们准备了简短的代码示例。

// Define the routes in your app and any arguments.
dataobjectHome
dataclassProduct(valid: String)
// Create a back stack, specifying the route the app should start with.
valbackStack = remember { mutableStateListOf(Home) }
// A NavDisplay displays your back stack. Whenever the back stack changes, the display updates.
NavDisplay(
  backStack = backStack,
 // Specify what should happen when the user goes back
  onBack = { backStack.removeLastOrNull() },
 // An entry provider converts a route into a NavEntry which contains the content for that route.
  entryProvider = { route ->
   when(route) {
     isHome -> NavEntry(route) {
        Column {
          Text("Welcome to Nav3")
          Button(onClick = {
           // To navigate to a new route, just add that route to the back stack
            backStack.add(Product("123"))
          }) {
            Text("Click to navigate")
          }
        }
      }
     isProduct -> NavEntry(route) {
        Text("Product${route.id}")
      }
     else-> NavEntry(Unit) { Text("Unknown route:$route") }
    }
  }
)

开始使用并分享反馈

首先,您可以查看开发者文档以及操作指南,其中提供了以下示例:

常见导航界面,例如导航边栏或导航栏

条件导航,例如登录流程

使用 Scenes 的自定义布局

我们计划在未来为更复杂的用例提供代码示例、技术文档和文章。

Nav3 目前处于 Alpha 阶段,这意味着我们可能会根据反馈修改 API。

Nav3 为在 Compose 应用中构建现代导航提供了灵活而强大的基础。我们非常期待看到您借此打造的精彩作品。

您可以在 io.google 上查看所有 Google I/O 2025 的精彩更新。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3977

    浏览量

    130610
  • 模型
    +关注

    关注

    1

    文章

    3539

    浏览量

    50683
  • 开发者
    +关注

    关注

    1

    文章

    656

    浏览量

    17659

原文标题:Jetpack Navigation 3 | 专为 Compose 打造的全新导航库

文章出处:【微信号:Google_Developers,微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    iphone5发布会直播预告_iphone5发布会现场

    苹果iphone5发布会即将开始,iphone5发布会现场有哪些看点呢?小编在这里提供了iphone5发布会直播预告共大家参考了解,另外还有iphone5预定时间哦
    发表于 09-12 17:19 ?1.8w次阅读

    疑似乔布斯iphone5发布会彩排视频

    彩排iPhone 5发布会的视频。  目前这一段视频在国外的视频网站已经全部因苹果要求而删除,仅留下这一个还能看。  视频拍摄距离较远,不能看清乔布斯的面容,但是身上的装扮还是帮主的一贯风格。片中
    发表于 04-25 14:49

    [视频] 苹果iPhone7发布会完整视频回顾_中文字幕

    `iPhone7苹果发布会8号已经开了,现在除了发布会中文视频直播全程视频,没看的亲来看哦!~~我已经发到发烧友本站上,喜欢的亲们来猛戳 点击标题看iPhone7发布会视频回顾--》》iPhone7
    发表于 09-12 17:18

    小米6发布会几点开始? 小米6发布会直播网址介绍

    小米6发布会会在今天开启,那么小米6发布会在4月19号几点开呢?小米6发布会地点是哪里?小编给大家做个详细的介绍。
    发表于 04-19 14:19 ?1591次阅读

    苹果AirPods 3将如期在明年3发布

    年底苹果是否会带来所谓头戴耳机AirPods Studio还有待观察,不过,最新爆料称,AirPods 3正有序推进,将如期在明年3发布
    的头像 发表于 12-08 09:42 ?2269次阅读

    苹果AirPods 3采用入耳式设计,将在明年3发布

    年底苹果是否会带来所谓头戴耳机AirPods Studio还有待观察,不过,最新爆料称,AirPods 3正有序推进,将如期在明年3发布
    发表于 12-08 10:35 ?1647次阅读

    苹果有望在3发布第五代iPad Pro

    多方消息指出,苹果最快3发布第五代iPad Pro。
    的头像 发表于 01-12 17:23 ?3940次阅读

    iqoo8发布会如约而至 iqoo8发布会有哪些看点

    今晚(8月17日)北京时间19点30分,期盼已久的iQOO8系列旗舰手机将会迎来全新发布,iQOO秋季新品发布会依然采用线上形式进行,iqoo8发布会有哪些看点?
    的头像 发表于 08-17 15:51 ?4829次阅读

    苹果13发布会2021发布会时间

    苹果13发布会2021发布会时间目前已经基本确定。根据知情人士透露,苹果公司将于9月15日晚正式举行秋季新品发布会。据了解,苹果新品发布会亮点还是有很多的,届时跟iPhone 13系列
    的头像 发表于 09-04 17:48 ?1.9w次阅读

    苹果13发布会什么时候可以买 苹果13发布会有新耳机么

    苹果13发布会什么时候可以买 苹果13发布会什么时候可以买?一般情况下,苹果13发布会结束后第二天就可以购买,不过发布会后购买的人较多,等待的时间比较长,到货的时间也比较晚。 苹果13
    的头像 发表于 09-13 11:01 ?5940次阅读

    苹果13发布会什么时候 苹果13发布会预告

    苹果13发布会即将如约而至,苹果13发布会就在今晚(9月15日)凌晨正式召开,新款Macbook Pro、AirPods3、iPhone13系列和iPad mini6届时将会在苹果秋季新品发布
    的头像 发表于 09-14 09:15 ?3167次阅读

    小米12发布时间和价格

    小米12发布时间和价格:昨日雷军亲自官宣了小米12发布会的信息,称小米12发布会将于12月28日正式举行,从小米12系列的官方渲染图来看,小米将会发布小米12 Ultra、小米12 P
    的头像 发表于 12-23 11:49 ?6671次阅读

    华为nova10发布会:nova10系列全新支持WiFi 6增强技术

    华为nova10发布会:nova10系列全新支持WiFi 6增强技术 ? ? ? ? ? ? 审核编辑:彭静 ?
    的头像 发表于 07-04 15:36 ?3842次阅读
    华为nova10<b class='flag-5'>发布</b>会:nova10系列<b class='flag-5'>全新</b>支持WiFi 6增强技术

    AITO问界M7发布PetalMaps打造全新智慧导航体验

    解决方案BU CEO余承东在发布会上表示,要让用户“爱上车机导航”。Petal Maps创新性地实现手机-车机导航任务跨端流转、位置便捷分享,同时可提供无处不在的导航信息,结合智慧分屏
    的头像 发表于 07-05 14:38 ?2520次阅读
    AITO问界M7<b class='flag-5'>发布</b>PetalMaps打造<b class='flag-5'>全新</b>智慧<b class='flag-5'>导航</b>体验

    华为nova10发布会 华为nova10美学设计全新升级

    华为nova10发布会 华为nova10美学设计全新升级 ? ? ? ? ? 审核编辑:彭静
    的头像 发表于 07-05 14:49 ?1168次阅读
    华为nova10<b class='flag-5'>发布</b>会 华为nova10美学设计<b class='flag-5'>全新</b>升级