——沉默不是因为词穷,而是因为心空。现实有多残酷,你就应该有多坚强。
前言
——这篇主要是梳理一下Jetpack架构组件之一的Navigation,并结合楼主所学做个总结。面向那些还没接触Navigation的同学们。看完这篇可以快速了解它,并轻松使用。也想请教前辈们指点文章中的错误或不足的地方。本篇只描述Navigation,不会拓展额外的知识,若想了解更多关于Jetpack组件知识可以看楼主写的Jetpack专栏。
一、简介
(1)是什么
——是Android Jetpack 中的导航组件,支持用户导航、进入和退出应用中不同内容片段的交互。
这是文档给的说法,描述简单。却不易理解,唯有使用过该组件的方可理解其深刻含义。
这里就不强行解释,待浏览完该文章再细品。
(2)有什么用
——Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式。
(3)有什么优点
- 管理 Fragment 更加方便
- 更好的处理Fragment切换导航问题
- 该组件还可以支持抽屉式导航栏(DrawerLayout)和底部导航(BottomNavigationView)与顶部应用栏(Toolbar、CollapsingToolbarLayout、ActionBar)
二、基本使用
(1)添加依赖
dependencies {
def nav_version = "2.1.0"
// Java language implementation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}
(2)创建navigation视图
1.右击res—New>Android Resource File
2.定义名称与资源类型 Resource type =Navigation
这边定义login_navigation.xml文件如下。具体如何使用请参考官方文档。
<?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/login_navigation"
app:startDestination="@id/splashFragment">
<fragment
android:id="@+id/splashFragment"
android:name="com.blcs.xxx.fragment.SplashFragment"
android:label="splash"
tools:layout="@layout/fragment_splash" >
<action
android:id="@+id/action_splashFragment_to_loginFragment"
app:destination="@id/loginFragment" />
</fragment>
<fragment
android:id="@+id/loginFragment"
android:name="com.blcs.xxx.fragment.LoginFragment"
android:label="login"
tools:layout="@layout/fragment_login" >
<action
android:id="@+id/action_loginFragment_to_registerFragment"
app:destination="@id/registerFragment" />
</fragment>
<fragment
android:id="@+id/registerFragment"
android:name="com.blcs.xxx.fragment.RegisterFragment"
android:label="register"
tools:layout="@layout/fragment_register" />
</navigation>