Android JetPack之Navigation

前言

有一段時間沒有系統(tǒng)的學習一種android技術了,最近查了一下android的最新技術,感覺都是在講jetpack,于是就打算學習一下。
花了兩天時間學習了一下JetPack - Navagation,在這記錄一下。

概念

Navigation是一個可簡化Android導航的庫和插件。

更確切的來說,Navigation是用來管理Fragment的切換,并且可以通過可視化的方式,看見App的交互流程

優(yōu)點

  • 處理Fragment的切換(上文已說過)
  • 默認情況下正確處理Fragment的前進和后退
  • 為過渡和動畫提供標準化的資源
  • 實現(xiàn)和處理深層連接
  • 可以綁定Toolbar、BottomNavigationView和ActionBar等
  • SafeArgs(Gradle插件) 數(shù)據(jù)傳遞時提供類型安全性
  • ViewModel支持

添加依賴

implementation "androidx.navigation:navigation-fragment-ktx:$rootProject.navigationVersion"
implementation "androidx.navigation:navigation-ui-ktx:$rootProject.navigationVersion"

創(chuàng)建導航圖

  • 在“Project”窗口中,右鍵點擊 res 目錄,然后依次選擇 New > Android Resource File。此時系統(tǒng)會顯示 New Resource File 對話框。

  • 在 File name 字段中輸入名稱,例如“nav_graph”。

  • 從 Resource type 下拉列表中選擇 Navigation,然后點擊 OK。
    當您添加首個導航圖時,Android Studio 會在 res 目錄內創(chuàng)建一個 navigation 資源目錄。該目錄包含您的導航圖資源文件(例如 nav_graph.xml)。

    ps:也可以直接在res下面創(chuàng)建名為navigation的文件夾,然后右鍵new一個navigation resource file。

    創(chuàng)建好的導航圖如下所示:


    1.png

點擊可添加destination,這里我們準備好三個fragment,分別是LoginFragment,RegisterFragment,WelcomeFragment。

添加destination后的導航圖如下所示:


2.png

指定起始destination:
您可以右鍵點擊該目的地,然后點擊 Set as Start Destination
代碼如下:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/login_navigation"
    app:startDestination="@id/welcomeFragment">
   ...
</navigation>

下面我們可以連接destination:
1,在 Design 標簽頁中,將鼠標懸停在目的地的右側,該目的地為您希望用戶從中導航出來的目的地。該目的地右側上方會顯示一個圓圈。
2,點擊您希望用戶導航到的目的地,并將光標拖動到該目的地的上方,然后松開。

操作之后,xml文件會自動生成相應的代碼:

<fragment
        android:id="@+id/welcomeFragment"
        android:name="com.aron.learning.fragment.WelcomeFragment"
        android:label="WelcomeFragment"
        tools:layout="@layout/fragment_welcome">
        <action
            android:id="@+id/action_welcomeFragment_to_loginFragment"
            app:destination="@id/loginFragment" />
        <action
            android:id="@+id/action_welcomeFragment_to_registerFragment"
            app:destination="@id/registerFragment" />
</fragment>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容