最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android-Jetpack-Navigation組件使用示例

 更新時(shí)間:2023年08月01日 11:48:19   作者:阿博聊編程  
這篇文章主要介紹了Android-Jetpack-Navigation組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Navigation的優(yōu)勢(shì)

可能有部分Android開發(fā)的小伙伴見過單Activity多FragmentApp,使用起來非常的流暢或者說非常的絲滑。自己想要嘗試這種開發(fā)模式的時(shí)候,又會(huì)發(fā)現(xiàn)Fragment的管理會(huì)比較麻煩。現(xiàn)在不用怕了,Android SDK為了我們提供了Navigation來實(shí)現(xiàn)這種開發(fā)模式。希望這篇文章對(duì)小伙伴們有所啟發(fā)。

先來說說使用Navigation的優(yōu)勢(shì):

  • 可以可視化頁面的導(dǎo)航,可以幫我們快速理清頁面之間的關(guān)系;
  • 通過destinationaction完成頁面之間的導(dǎo)航;
  • 方便我們添加頁面的切換動(dòng)畫;
  • 頁面之間類型安全的參數(shù)傳遞;
  • 通過NavigationUI類,對(duì)菜單、底部導(dǎo)航、抽屜菜單導(dǎo)航進(jìn)行統(tǒng)一的管理;
  • 支持深層鏈接DeepLink(深層鏈接)。

project的Navigation依賴設(shè)置

dependencies {
   def nav_version = "2.4.2"
   classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}

module的Navigation依賴設(shè)置

plugins {
  id 'androidx.navigation.safeargs'
}

Java版本:

implementation "androidx.navigation:navigation-fragment:2.4.1"
implementation "androidx.navigation:navigation-ui:2.4.1"

Kotlin版本:

implementation "androidx.navigation:navigation-fragment-ktx:2.4.1"
implementation "androidx.navigation:navigation-ui-ktx:2.4.1"

Compose版本:

implementation "androidx.navigation:navigation-compose:2.4.1"

Navigation的主要因素

  • Navigation Graph,新型的XML資源文件,其中包含App所有的頁面,以及頁面之間的關(guān)系。
  • NavHostFragment,特殊的Fragment,我們可以認(rèn)為是一個(gè)Fragment的容器,Navigation Graph中的Fragment都是通過NavHostFragment進(jìn)行展示。
  • NavController,在代碼當(dāng)中完成Navigation Graph中的頁面切換工作。

Navigation代碼示例

1.在res創(chuàng)建navigation資源文件夾,在navigation創(chuàng)建nav_graph.xml文件。

2.在activity_main.xml,內(nèi)容詳情如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <fragment
        android:id="@+id/nav_host_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="androidx.navigation.fragment.NavHostFragment"
        app:navGraph="@navigation/nav_graph"
        app:defaultNavHost="true"/>
</LinearLayout>

屬性說明如下:

  • android:name="androidx.navigation.fragment.NavHostFragment",告訴系統(tǒng)這是一個(gè)特殊的Fragment。
  • app:defaultNavHost="true",表示Fragment會(huì)自動(dòng)處理系統(tǒng)返回鍵,當(dāng)用戶做返回操作的時(shí)候會(huì)退出當(dāng)前的Fragment.
  • app:navGraph="@navigation/nav_graph",導(dǎo)航視圖。

在nav_graph.xml創(chuàng)建兩個(gè)Fragment

<?xml version="1.0" encoding="utf-8"?>
<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/nav_graph"
    app:startDestination="@id/mainFragment">
    <fragment
        android:id="@+id/mainFragment"
        android:name="com.yb.test.MainFragment"
        android:label="fragment_main"
        tools:layout="@layout/fragment_main">
        <action
            android:id="@+id/action_mainFragment_to_secondFragment"
            app:destination="@id/secondFragment" />
    </fragment>
    <fragment
        android:id="@+id/secondFragment"
        android:name="com.yb.test.SecondFragment"
        android:label="fragment_second"
        tools:layout="@layout/fragment_second" />
</navigation>

NavControIIer實(shí)現(xiàn)導(dǎo)航功能

我們?cè)?code>MainFragment中創(chuàng)建按鈕,設(shè)置按鈕的點(diǎn)擊事件:

view.findViewById<Button>(R.id.btn).setOnClickListener {
   Navigation.findNavController(it).navigate(R.id.action_mainFragment_to_secondFragment)
}

大概的實(shí)現(xiàn)就是這樣子,感興趣的小伙伴可以嘗試一下。

以上就是Android-Jetpack-Navigation組件使用示例的詳細(xì)內(nèi)容,更多關(guān)于Android-Jetpack-Navigation組件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

进贤县| 卓资县| 铜川市| 康乐县| 渝中区| 浏阳市| 霍州市| 潢川县| 大新县| 宁陵县| 连州市| 宁城县| 永和县| 乌兰县| 长治县| 客服| 崇阳县| 广安市| 东平县| 建平县| 五河县| 阜新| 资中县| 名山县| 武清区| 潞西市| 黔西| 渑池县| 会昌县| 威宁| 兴隆县| 枣庄市| 安庆市| 连平县| 揭东县| 汝阳县| 海林市| 马边| 崇礼县| 临西县| 遂川县|