Android-Jetpack-Navigation组件使用示例

 更新时间:2023年08月01日 11:48:19   作者:阿博聊编程  
这篇文章主要介绍了Android-Jetpack-Navigation组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Navigation的优势

可能有部分Android开发的小伙伴见过单Activity多FragmentApp,使用起来非常的流畅或者说非常的丝滑。自己想要尝试这种开发模式的时候,又会发现Fragment的管理会比较麻烦。现在不用怕了,Android SDK为了我们提供了Navigation来实现这种开发模式。希望这篇文章对小伙伴们有所启发。

先来说说使用Navigation的优势:

  • 可以可视化页面的导航,可以帮我们快速理清页面之间的关系;
  • 通过destinationaction完成页面之间的导航;
  • 方便我们添加页面的切换动画;
  • 页面之间类型安全的参数传递;
  • 通过NavigationUI类,对菜单、底部导航、抽屉菜单导航进行统一的管理;
  • 支持深层链接DeepLink(深层链接)。

project的Navigation依赖设置

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

module的Navigation依赖设置

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所有的页面,以及页面之间的关系。
  • NavHostFragment,特殊的Fragment,我们可以认为是一个Fragment的容器,Navigation Graph中的Fragment都是通过NavHostFragment进行展示。
  • NavController,在代码当中完成Navigation Graph中的页面切换工作。

Navigation代码示例

1.在res创建navigation资源文件夹,在navigation创建nav_graph.xml文件。

2.在activity_main.xml,内容详情如下:

<?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",告诉系统这是一个特殊的Fragment
  • app:defaultNavHost="true",表示Fragment会自动处理系统返回键,当用户做返回操作的时候会退出当前的Fragment.
  • app:navGraph="@navigation/nav_graph",导航视图。

在nav_graph.xml创建两个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实现导航功能

我们在MainFragment中创建按钮,设置按钮的点击事件:

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

大概的实现就是这样子,感兴趣的小伙伴可以尝试一下。

以上就是Android-Jetpack-Navigation组件使用示例的详细内容,更多关于Android-Jetpack-Navigation组件的资料请关注脚本之家其它相关文章!

相关文章

  • 如何为RecyclerView添加分隔线

    如何为RecyclerView添加分隔线

    这篇文章主要为大家详细介绍了如何为RecyclerView添加分隔线,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 解决Android SELinux权限问题记录分析

    解决Android SELinux权限问题记录分析

    这篇文章主要为大家介绍了解决Android SELinux权限问题记录分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • android monkey自动化测试改为java调用monkeyrunner Api

    android monkey自动化测试改为java调用monkeyrunner Api

    一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本。不过,最近发现可以用java调用monkeyrunner Api,于是,就简单研究了一下。这里做一些总结。希望有对在研究的午饭可以有所用处
    2012-11-11
  • Android辅助功能AccessibilityService与抢红包辅助

    Android辅助功能AccessibilityService与抢红包辅助

    抢红包的原理都差不多,一般是用Android的辅助功能(AccessibilityService类)先监听通知栏事件或窗口变化事件来查找红包关键字然后去模拟点击或打开红包
    2016-02-02
  • 详解Android版本适配:9.0 Pie

    详解Android版本适配:9.0 Pie

    这篇文章主要介绍了Android版本适配9.0 Pie,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Android Glide的简单使用

    Android Glide的简单使用

    本文主要介绍了Glide简单使用。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Android自定义Dialog原理实例解析

    Android自定义Dialog原理实例解析

    这篇文章主要介绍了Android自定义Dialog原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Android跟随手指移动的控件demo实例

    Android跟随手指移动的控件demo实例

    大家好,本篇文章主要讲的是Android跟随手指移动的控件demo实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Android 蓝牙连接 ESC/POS 热敏打印机打印实例(ESC/POS指令篇)

    Android 蓝牙连接 ESC/POS 热敏打印机打印实例(ESC/POS指令篇)

    这篇文章主要介绍了Android 蓝牙连接 ESC/POS 热敏打印机打印实例(ESC/POS指令篇),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Android仿QQ列表滑动删除操作

    Android仿QQ列表滑动删除操作

    这篇文章主要为大家详细介绍了Android仿QQ列表滑动删除操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论