伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

    文章

    4033

    瀏覽量

    134279
  • 模型
    +關注

    關注

    1

    文章

    3783

    瀏覽量

    52201
  • 開發者
    +關注

    關注

    1

    文章

    777

    瀏覽量

    18049

原文標題: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 ?1669次閱讀

    蘋果AirPods 3將如期在明年3發布

    年底蘋果是否會帶來所謂頭戴耳機AirPods Studio還有待觀察,不過,最新爆料稱,AirPods 3正有序推進,將如期在明年3發布
    的頭像 發表于 12-08 09:42 ?2637次閱讀

    蘋果AirPods 3采用入耳式設計,將在明年3發布

    年底蘋果是否會帶來所謂頭戴耳機AirPods Studio還有待觀察,不過,最新爆料稱,AirPods 3正有序推進,將如期在明年3發布。
    發表于 12-08 10:35 ?1770次閱讀

    蘋果有望在3發布第五代iPad Pro

    多方消息指出,蘋果最快3發布第五代iPad Pro。
    的頭像 發表于 01-12 17:23 ?4434次閱讀

    iqoo8發布會如約而至 iqoo8發布會有哪些看點

    今晚(8月17日)北京時間19點30分,期盼已久的iQOO8系列旗艦手機將會迎來全新發布,iQOO秋季新品發布會依然采用線上形式進行,iqoo8發布會有哪些看點?
    的頭像 發表于 08-17 15:51 ?5193次閱讀

    蘋果13發布會2021發布會時間

    蘋果13發布會2021發布會時間目前已經基本確定。根據知情人士透露,蘋果公司將于9月15日晚正式舉行秋季新品發布會。據了解,蘋果新品發布會亮點還是有很多的,屆時跟iPhone 13系列
    的頭像 發表于 09-04 17:48 ?1.9w次閱讀

    蘋果13發布會什么時候可以買 蘋果13發布會有新耳機么

    蘋果13發布會什么時候可以買 蘋果13發布會什么時候可以買?一般情況下,蘋果13發布會結束后第二天就可以購買,不過發布會后購買的人較多,等待的時間比較長,到貨的時間也比較晚。 蘋果13
    的頭像 發表于 09-13 11:01 ?6453次閱讀

    蘋果13發布會什么時候 蘋果13發布會預告

    蘋果13發布會即將如約而至,蘋果13發布會就在今晚(9月15日)凌晨正式召開,新款Macbook Pro、AirPods3、iPhone13系列和iPad mini6屆時將會在蘋果秋季新品發布
    的頭像 發表于 09-14 09:15 ?3496次閱讀

    小米12發布時間和價格

    小米12發布時間和價格:昨日雷軍親自官宣了小米12發布會的信息,稱小米12發布會將于12月28日正式舉行,從小米12系列的官方渲染圖來看,小米將會發布小米12 Ultra、小米12 P
    的頭像 發表于 12-23 11:49 ?7384次閱讀

    華為nova10發布會:nova10系列全新支持WiFi 6增強技術

    華為nova10發布會:nova10系列全新支持WiFi 6增強技術 ? ? ? ? ? ? 審核編輯:彭靜 ?
    的頭像 發表于 07-04 15:36 ?4188次閱讀
    華為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 ?3354次閱讀
    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 ?1482次閱讀
    華為nova10<b class='flag-5'>發布</b>會 華為nova10美學設計<b class='flag-5'>全新</b>升級