Android?Jetpack組件Navigation導(dǎo)航組件的基本使用
本篇主要介紹一下 Android Jetpack 組件 Navigation 導(dǎo)航組件的 基本使用
當(dāng)看到 Navigation單詞的時(shí)候 應(yīng)該就大概知道 這是一個(gè)關(guān)于導(dǎo)航用的,下面我來(lái)簡(jiǎn)單介紹一下 如何使用Navigation組件的基本使用流程,并且一步步 實(shí)際操作一番 Navigation ,下圖是案例,實(shí)現(xiàn)登錄到詳情的跳轉(zhuǎn)
1.Navigation 基本概念
Navigation 是一個(gè)Jetpack組件 支持用戶導(dǎo)航,用于在 Android 應(yīng)用中的“目標(biāo)”之間進(jìn)行導(dǎo)航,無(wú)論 目標(biāo)是Fragment,Activity 還是其他組件。
導(dǎo)航組件由以下三個(gè)關(guān)鍵部分組成:
- 導(dǎo)航圖:在一個(gè)集中位置包含所有導(dǎo)航相關(guān)信息的 XML 資源。這包括應(yīng)用內(nèi)所有單個(gè)內(nèi)容區(qū)域(稱為目標(biāo))以及用戶可以通過(guò)應(yīng)用獲取的可能路徑。
NavHost
:顯示導(dǎo)航圖中目標(biāo)的空白容器。導(dǎo)航組件包含一個(gè)默認(rèn)NavHost
實(shí)現(xiàn) (NavHostFragment
),可顯示 Fragment 目標(biāo)。NavController
:在NavHost
中管理應(yīng)用導(dǎo)航的對(duì)象。當(dāng)用戶在整個(gè)應(yīng)用中移動(dòng)時(shí),NavController
會(huì)安排NavHost
中目標(biāo)內(nèi)容的交換。
簡(jiǎn)單點(diǎn) 下面直接來(lái)操作一下 來(lái)體驗(yàn)一下Navigation 的使用流程
2.Navigation 使用入門
2.1 添加Navigation依賴
簡(jiǎn)單點(diǎn) 只需要設(shè)置 navigation-fragment 和 navigation-ui 即可
dependencies { def nav_version = "2.4.2" ? // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" ? // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" ? // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" ? // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" ? // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
2.2 創(chuàng)建導(dǎo)航圖
導(dǎo)航圖是一種資源文件,其中包含您的所有目的地和操作。該圖表會(huì)顯示應(yīng)用的所有導(dǎo)航路徑。
向項(xiàng)目添加導(dǎo)航圖,請(qǐng)執(zhí)行以下操作:
- 在“Project”窗口中,右鍵點(diǎn)擊
res
目錄,然后依次選擇 New > Android Resource File。此時(shí)系統(tǒng)會(huì)顯示 New Resource File 對(duì)話框。 - 在 File name 字段中輸入名稱,例如“nav_graph”。
- 從 Resource type 下拉列表中選擇 Navigation,然后點(diǎn)擊 OK。
當(dāng)您添加首個(gè)導(dǎo)航圖時(shí),Android Studio 會(huì)在 res
目錄內(nèi)創(chuàng)建一個(gè) navigation
資源目錄。該目錄包含您的導(dǎo)航圖資源文件(例如 nav_graph.xml
)。
新建完成后 就自動(dòng) 在 res 下面生成 navigation目錄,里面存放上面新建的 導(dǎo)航圖
2.3 導(dǎo)航圖中添加目的地Fragment
點(diǎn)擊上面的菜單 + 就可以新建 destination 了
新建了2個(gè) fragment ,一個(gè)是 loginFragment 一個(gè)是 welcomeFragment
把他們兩個(gè)連起來(lái) 從 loginFragment 到 welcomeFragment ,會(huì)自動(dòng)生成一個(gè) action
順便稍微美化一下 loginFragment 和 welcomeFragment
2.4 Activity添加 NavHost
導(dǎo)航宿主NavHost 是 Navigation 組件的核心部分之一。導(dǎo)航宿主是一個(gè)空容器,用戶在您的應(yīng)用中導(dǎo)航時(shí),目的地會(huì)在該容器中交換進(jìn)出。
導(dǎo)航組件包含一個(gè)默認(rèn) NavHost
實(shí)現(xiàn) (NavHostFragment
下面在MainActivity 中添加一個(gè) NavHostFragment
拖入 Activity中 它會(huì)自動(dòng)展示出可用的 Navigation Graph 導(dǎo)航圖,就是上面創(chuàng)建的 my_nav_graph,選擇它即可
2.5 LoginFragment 代碼編寫
navController.navigate(R.id.action_loginFragment_to_welcomeFragment,bundle);
核心代碼如下,就是獲取 輸入的用戶名和密碼 并且攜帶用戶名 導(dǎo)航到 welcomeFragment
2.6 welcomeFragment 代碼編寫
很簡(jiǎn)單就是把 loginFragment 傳入的參數(shù) username 獲取到 展示在TextView 上即可
注意:通過(guò) getArguments() 去獲取 Bundle 的參數(shù)
最終效果如下:
總結(jié)
本篇主要簡(jiǎn)單介紹了一下 Navigation 是什么 以及使用它的流程是什么,并且結(jié)合實(shí)際案例 操作了一番,Navigation 還有很多其他用法,如條件導(dǎo)航、嵌套圖、過(guò)度動(dòng)畫 等等功能 有機(jī)會(huì)再操作
到此這篇關(guān)于Android Jetpack Navigation基本使用的文章就介紹到這了,更多相關(guān)Android Jetpack Navigation使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android Studio實(shí)現(xiàn)仿微信APP門戶界面詳解及源碼
這篇文章帶你通過(guò)Android studio來(lái)實(shí)現(xiàn)微信APP的門戶界面,主要說(shuō)明框架的各部分功能與實(shí)現(xiàn)過(guò)程,下文包含了整個(gè)開(kāi)發(fā)過(guò)程,以及解決問(wèn)題的思路并再末尾提供了源碼鏈接2021-10-10Android添加(創(chuàng)建)、刪除及判斷是否存在桌面快捷方式的方法
這篇文章主要介紹了Android添加(創(chuàng)建)、刪除及判斷是否存在桌面快捷方式的方法,涉及Android針對(duì)桌面快捷方式的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05Android基于API的Tabs3實(shí)現(xiàn)仿優(yōu)酷t(yī)abhost效果實(shí)例
這篇文章主要介紹了Android基于API的Tabs3實(shí)現(xiàn)仿優(yōu)酷t(yī)abhost效果,結(jié)合完整實(shí)例形式分析了Android實(shí)現(xiàn)優(yōu)酷界面效果的相關(guān)技巧,需要的朋友可以參考下2015-12-12android中px和dp,px和sp之間的轉(zhuǎn)換方法
在Android開(kāi)發(fā)中dp和px,sp和px之間的轉(zhuǎn)換時(shí)必不可少的。下面腳本之家小編給大家?guī)?lái)了android中px和dp,px和sp之間的轉(zhuǎn)換方法,感興趣的朋友一起看看吧2018-06-06TextView使用SpannableString設(shè)置復(fù)合文本 SpannableString實(shí)現(xiàn)TextView的鏈接
這篇文章主要為大家詳細(xì)介紹了如何利用SpannableString實(shí)現(xiàn)TextView的鏈接效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android從Fragment跳轉(zhuǎn)到其他Activity的簡(jiǎn)單實(shí)例
這篇文章主要介紹了Android從Fragment跳轉(zhuǎn)到其他Activity的簡(jiǎn)單實(shí)例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02Android使用DrawerLayout仿QQ6.0雙側(cè)滑菜單
這篇文章主要為大家詳細(xì)介紹了Android使用DrawerLayout仿QQ6.0雙側(cè)滑菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android開(kāi)發(fā)之如何自定義數(shù)字鍵盤詳解
這篇文章主要給大家介紹了關(guān)于Android開(kāi)發(fā)之如何自定義數(shù)字鍵盤的相關(guān)資料,本文語(yǔ)言是基于kotlin實(shí)現(xiàn)的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-09-09