Android Navigation 架構組件入門教程


Android Navigation 架構組件入門教程

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

轉載請表明出處:https://www.cnblogs.com/cavalier-/p/10429936.html

前言

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

教程下載

教程github

你需要知道

關於Navigation你需要知道如下三個組件

這是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>

每個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是一個跟蹤Navigation graph當前位置的對象,主要協調NavHostFragment顯示對應的Fragment,可通過NavController控制跳轉邏輯,安全傳參(SafeArgs后面講解)

SafeArgs

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

實踐過程

  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文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM