【Android进阶必学】JetPack指路明灯—Navigation

本文详述了Android JetPack中的Navigation组件的使用,包括引入依赖、创建Navigation Graph、设置NavHostFragment、路由控制、动态加载和动画。强调Navigation在现代化Android开发中的重要性,作为Fragment管理和路由的核心组件,它简化了Fragment管理,提供了安全的参数传递和过渡动画。通过实例展示了如何创建和使用Navigation,鼓励开发者深入理解其设计原理和核心概念。
摘要由CSDN通过智能技术生成

官网镇楼:

https://developer.android.com/guide/navigation

很多人在学习JetPack的时候喜欢到处找资料和各种学习的博客,但其实,官网上的资料已经很丰富了,而且写的很好,大部分时间,只需要先将官网上的资料吃透,基本上已经秒杀市面上80%的博客和文章了。

这篇文章并不会花大篇幅讲解Navigation的各种使用,因为官网文档已经无比详细了,本篇文章更重要的是讲解设计原理和核心概念的分析。

Navigation是JetPack中非常重要的一员,他对现代化的Android JetPack架构,提供了基础,是构建整体架构的核心组件。同时,Navigation也是一个优秀的Fragment管理工具(当然,不仅仅是管理Fragment,Activity也是可以的),可以很好的处理之前使用Fragment那些不是很好的方面,通过Navigation,开发者可以将重点放在业务开发上,避免处理太多了Fragment管理代码和调用代码,从而加速业务开发效率。

  • 提供了Fragment管理容器
  • 支持Deeplink、URL Link定位到Fragment
  • Fragment、Activity间更加安全的参数传递
  • 更加方便的处理过渡动画

使用Navigation主要需要创建以下几个部分的代码:

  • Navigation Graph:用于对Fragment进行配置的配置文件,需要在res/navigation/下创建的xml文件
  • FragmentContainerView/NavHostFragment:一系列Fragment的容器,用于承载Fragment
  • NavController:用于处理Fragment路由跳转

下面通过一个简单的例子,来演示下,如何使用Navigation。

引入依赖

implementation "androidx.fragment:fragment-ktx:1.2.0"
implementation "androidx.navigation:navigation-fragment-ktx:2.3.0"
implementation "androidx.navigation:navigation-ui-ktx:2.3.0"

创建测试Fragment和Activity

class LoginFragment : Fragment(R.layout.fragment_login) {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
    }
}

类似这样的测试Fragment,不浪费笔墨了。

创建Navigation Graph

在res文件夹下创建navigation文件夹,并定义一个xxxx.xml文件,选择类型为navigation。

这时候,将测试的Fragment导入Design视图,就可以看见这些Fragment的界面了,通过每个视图左右拉出来的箭头,就可以生产一个路由Action,如图所示。

通过可视化界面,可以很清楚的看见Fragment间的路由路径,同时要注意的是,单个Fragment可以生成不止一个Action,例如一个Fragment可以跳转多个其他Fragment。

通过Design生成的代码如下所示。

对于navigation标签来说,最重要的是它的startDestination属性,即类似MainActivity的概念,代表了路由的起点。多个destination连接起来就组成了一个栈导航图

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值