最近在研究Jetpack,这是我看见的一个比较好的系列文,这里分享给大家,希望对大家的学习和工作有所帮助。
原文地址:https://www.jianshu.com/p/9bd73edeb233
我们用的是标准jetpack套件,所以我们采用DataBinding,并且,项目结构是一个抽屉布局和主页面
Navigation的主要元素
Navigation的主要元素有如下三个:
- Navigation Graph。一种xml资源文件,里面包含需要统一管理的所有页面以及页面之间的关系。
- NavHostFragment。一种特殊的Fragment,是其他Fragment的容器,在Navigation Graph中的Fragment是通过NavHostFragment进行展示的。
- NavController。用于在代码中完成Navigation Graph中具体的页面切换工作。
上述三者关系为:在切换Fragment时,使用NavController对象,告知其要去Navigation Graph中的哪个Fragment;NavController会将这个Fragment展示在NavHostFragment中。
用Navigation创建UI
- 在res文件夹下创建navigation目录,然后在这个新建的navigation目录下创建一个Navigation Resource File文件
File name设为nav_graph,Root element用默认的navigation。生成之后Android Studio会询问是否自动添加相关依赖,单击OK,等待依赖添加完成。
- NavHostFragment是一种特殊的Fragment,所以需要将其添加到其依托的Activity布局文件中。在NavHostFragment依托的Activity布局文件下。
DataBinding+DrawLayout+NavHostFragment+NavigationView
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<!-- 侧滑 -->
<androidx.drawerlayout.widget.DrawerLayout
android:i