Android Navigation 架構組件入門教程

Android Navigation 架構組件入門教程

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。html

轉載請代表出處:http://www.javashuo.com/article/p-cbzjqeaz-hb.htmlandroid

前言

Navigation組件是AndroidStudio3.2版本更新帶來的新組件,其特色是在一個Activity中使用多個Fragment處理平滑用戶操做,且能夠統一進場,退場,彈出,隱藏動畫,可視化處理Action,支持深層連接(不在同一個Activity時能夠彈出跳轉,底層是BroadcastReceiver),支持以少許代碼鏈接底部導航或者鏈接ActionBar菜單或者鏈接Drawlayout的MenuItem,且導航時提供了類型安全(SafeArgs)。好處說了那麼多,下面我們來看看具體如何使用吧!git

教程下載

教程githubgithub

你須要知道

關於Navigation你須要知道以下三個組件設計模式

Navigation graph

這是Navigation的導航圖,位於res/navigation/目錄下的xml文件, 其有兩個模式,Design(可視化設計模式)和Text(文字模式),在Design可視化環境下能夠對整個Navigation作新建等操做,在Text模式下可進行代碼聲明,以下所示:安全

<fragment
        android:id="@+id/home_dest"
        android:name="com.example.android.codelabs.navigation.HomeFragment"
        android:label="@string/home"
        tools:layout="@layout/home_fragment">
        <action
            android:id="@+id/next_action"
            app:destination="@+id/flow_step_one_dest"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right" />
</fragment>

NavHostFragment

每一個Navigation圖都有一個起始的Fragment,這個Fragment將做爲棧底(壓棧,相似Activity的啓動棧),其在佈局文件中以下聲明:網絡

<fragment
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/my_nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    app:navGraph="@navigation/nav_graph"
    app:defaultNavHost="true"
        />
  • 這裏面你們重點關注android:nameapp:defaultNavHost="true"是聲明啓動的Fragment爲NavHostFragment
  • 下面的app:navGraph是將此fragment與Navigation graph作關聯

NavController

NavController是一個跟蹤Navigation graph當前位置的對象,主要協調NavHostFragment顯示對應的Fragment,可經過NavController控制跳轉邏輯,安全傳參(SafeArgs後面講解)架構

SafeArgs

使用SafeArgs須要導入Gradle插件(詳情看注意事項第4點),在傳值類型會自動生成對應類型的class,因此官方推介使用SafeArgs進行傳參app

實踐過程

  1. 使用AndroidStudio 3.2以上版本
  2. 在AndroidStudio 中導入教程下載的實驗項目,此過程等待時間長短依據你當前的網絡環境
  3. 打開app\src\main\res\navigation\nav_graph文件(此文件就是上面提到的Navigation graph)
  4. 切換頁面內,下面的編輯模式到Design模式,在裏面找到一個綠色的+號New Destination,在彈出的窗口內選擇SettingFragment,恭喜你目前已經掌握添加一個Fragment到Navigation Edit
  5. 接下來我們切換到MainFragment,在onCreateView中加入NavController navController = NavHostFragment.findNavController(MainFragment.this); navController.navigate(R.id.twoFragment);,這段代碼意味着我們從前面認識到的NavHostFragment中找到NavController,後面經過獲得的NavController導航到ID叫R.id.twoFragment的目標
  6. 接下來我們切換到TwoFragment,在onCreateView中加入NavController navController = NavHostFragment.findNavController(TwoFragment.this); navController.navigate(R.id.mainFragment);,這段代碼意味着我們從前面認識到的NavHostFragment中找到NavController,後面經過獲得的NavController導航到ID叫R.id.mainFragment的目標
  7. 運行項目
  8. 至此你已經初步掌握了Navigation的入門用法!

注意事項

  1. 運行環境必須是Android Studio3.2以上
  2. 最低運行在API14設備以上

引用

Navigation文檔ide

原文出處:https://www.cnblogs.com/cavalier-/p/10429936.html

相關文章
相關標籤/搜索