美文网首页前端开发技术
Android JetPack之Navigation

Android JetPack之Navigation

作者: Aron1001 | 来源:发表于2022-02-14 18:29 被阅读0次

    前言

    有一段时间没有系统的学习一种android技术了,最近查了一下android的最新技术,感觉都是在讲jetpack,于是就打算学习一下。
    花了两天时间学习了一下JetPack - Navagation,在这记录一下。

    概念

    Navigation是一个可简化Android导航的库和插件。

    更确切的来说,Navigation是用来管理Fragment的切换,并且可以通过可视化的方式,看见App的交互流程

    优点

    • 处理Fragment的切换(上文已说过)
    • 默认情况下正确处理Fragment的前进和后退
    • 为过渡和动画提供标准化的资源
    • 实现和处理深层连接
    • 可以绑定Toolbar、BottomNavigationView和ActionBar等
    • SafeArgs(Gradle插件) 数据传递时提供类型安全性
    • ViewModel支持

    添加依赖

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

    创建导航图

    • 在“Project”窗口中,右键点击 res 目录,然后依次选择 New > Android Resource File。此时系统会显示 New Resource File 对话框。

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

    • 从 Resource type 下拉列表中选择 Navigation,然后点击 OK。
      当您添加首个导航图时,Android Studio 会在 res 目录内创建一个 navigation 资源目录。该目录包含您的导航图资源文件(例如 nav_graph.xml)。

      ps:也可以直接在res下面创建名为navigation的文件夹,然后右键new一个navigation resource file。

      创建好的导航图如下所示:


      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>
    

    相关文章

      网友评论

        本文标题:Android JetPack之Navigation

        本文链接:https://www.haomeiwen.com/subject/jqqhlrtx.html