安卓导航组件关于Navgation的使用细节与源码解读之基础知识(一)

标题Navgation导航组件

官方内容入口


navgation的关键组成

  1. 导航图
  2. NavHost
  3. NavController

Navgation-导航图
简单理解就是窗体布局组成一个缩略关联图
(注:layout 下 设计了每个界面的内容;navgation是将这些界面经行关联 毕竟我们的Activity切换等同于界面内容切换 .navgation导航图就是提前设计好这些Intent/intent-info)
NavHost
简单理解为我们所有的导航图需要一个容器来承载我们导航的内容,这就好比我们的身体承载我们的各个肢体
NavgationController
简单理解为我们的大脑 控制我们的导航图以及导航图的行为!
(注:行为比如说类似activity的跳转,动画,深层链接等等)

核心依赖

  def nav_version = "2.3.5"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"
	 ![navgation创建目录](https://www.icode9.com/i/ll/?i=36983bbe09a0432fb6443fa730c18db8.png)

我们所有的导航组件放于res->navgation目录下


navgation核心标签的说明

  1. android:id 导航id (导航唯一标识 和ui组件id一样 )
  2. app:startDestination 当前导航图中导航起始目的地

app:startDestination
这里简单说明下这个属性的用途
1.在安卓中Actviity依然是我们导航图的宿主,我们导航图是所有ui的脑图,那么这个就是指定我们ui的第一个导航位置!
2.在我们后面会介绍到我们导航图可以存在多个 那么我们导航到别的导航图时也必须指定一个开始位置.

创建我们的额导航图

安卓导航组件关于Navgation的使用细节与源码解读之基础知识(一)
介绍下每个标签的作用
1.include标签

<include>标签和ui中的功能基本一样  引用其他导航图的


例子:
安卓导航组件关于Navgation的使用细节与源码解读之基础知识(一)
我们需要将second导航图引入nav_graph.xml中
安卓导航组件关于Navgation的使用细节与源码解读之基础知识(一)

2.activity标签

   导入activity到我们的导航图中 使用activity标签的name属性根据全路劲引入

3.fragment标签

  导入fragment到我们的导航图中 使用fragment标签的name属性根据全路劲引入

4.action标签

action标签是我们导航图之间的导航行为,比如fragment->activity   fragment->fragment等必须配置action标签   和activity的action一样   注意 这也让fragment具有了"跳转"功能并可以携带参数(之前fragment通讯需要借助activity)

安卓导航组件关于Navgation的使用细节与源码解读之基础知识(一)

后面在具体说明属性 这里只是介绍:destination 表示我们跳转到的目标activity/fragment
5.argument标签

跳转携带的参数
    name  表示我们的key键   defaultValue表示我们的默认参数
    argtype表示我们参数的类型

安卓导航组件关于Navgation的使用细节与源码解读之基础知识(一)
6.dialog 标签

引入dialog

7.deeplink标签

深层连接标签  (我们通常说的scheme)

8.navgation标签

导航图标签
上一篇:ViewPager缓存


下一篇:关于在Fragment中嵌套Fragment后来回切换出现空白页的问题解决