视频介绍

https://www.bilibili.com/vide...

简介

  • Navigation简介

AndroidJetpack组件。Google官网对它的形容:

明天,咱们发表推出Navigation组件,作为构建您的利用内界面的框架,重点是让单 Activity 利用成为首选架构。利用Navigation组件对 Fragment 的原生反对,您能够取得架构组件的所有益处(例如生命周期和 ViewModel),同时让此组件为您解决 FragmentTransaction 的复杂性。此外,Navigation组件还能够让您申明咱们为您解决的转场。它能够主动构建正确的“向上”和“返回”行为,蕴含对深层链接的残缺反对,并提供了帮忙程序,用于将导航关联到适合的 UI 小部件,例如抽屉式导航栏和底部导航。
  • XPage简介

一个十分不便的fragment页面框架,X-Library系列重要组件。设计的初衷是心愿能做一个通用的Activity作为壳,Fragment作为页面填充展现,并且可能实现自在的切换和数据交互, 点击理解XPage更多内容.


个性比照

比照个性NavigationXPage
注册形式XML注册json或者@Page注册
参数传递动静/动态都反对动静/动态都反对
页面切换动画动静反对动静/动态都反对
容器占位数反对多个占位仅反对一个占位
便捷性每次都须要编写navigation导航无需重复性代码,一个@Page注解搞定
功能性弱小,反对多种应用形式弱小,提供多种罕用组件和API
拓展性优良,不便拓展因为谋求便捷性,因而就义了局部拓展性
指标去除Activity去除Activity
生态AndroidJetpack全家桶,Google官网出品生态绝对单薄,然而也有X-Library系列反对

通过下面表格的比照能够看出,这两个框架各有特色。

  • Navigation偏重拓展性,适宜中大型项目,不便我的项目的保护和拓展。
  • XPage偏重便捷性,适宜中小型我的项目,疾速开发,尤其适宜老手、学生党和自在开发等独立开发者。

应用比照

以下我仅从集成和页面跳转两个方面进行简略的应用比拟,更多应用内容能够参阅本我的项目源码。我的项目地址: https://github.com/xuexiangjys/Navigation_XPage

集成

  • Navigation

因为是Google出品,所有十分不便,只须要你创立我的项目(New Project)的时候,抉择"Basic Activity"的选项,工程会主动帮你减少Navigation的依赖。如下图:

如果你不想创立新的我的项目,也很简略,只须要在我的项目中减少如下依赖:

dependencies {    ...    implementation 'androidx.navigation:navigation-fragment:2.3.0'    implementation 'androidx.navigation:navigation-ui:2.3.0'}
  • XPage

XPage的集成绝对比拟麻烦,不过绝对也提供了一个模版工程,间接集成了XPage,拿到手就能够用了。

  • 简化版的Android空壳模版工程
  • Android空壳模版工程

如果你想集成到本人的我的项目中,能够参考XPage集成指南。

页面跳转

页面跳转的话,XPage就绝对简略多了。
  • Navigation

1.在res/navigation/中创立navigation导航图。

2.在Activity的布局中减少Fragment占位容器。上面是应用NavHostFragment进行占位。

<fragment    android:id="@+id/nav_host_fragment"    android:name="androidx.navigation.fragment.NavHostFragment"    android:layout_width="0dp"    android:layout_height="0dp"    app:defaultNavHost="true"    app:navGraph="@navigation/nav_graph" />

3.应用NavController进行页面导航。

NavHostFragment.findNavController(FirstFragment.this)        .navigate(R.id.action_FirstFragment_to_SecondFragment);
  • XPage

1.轻易创立一个类并继承XPageFragment,而后在类上应用@Page进行注解

@Pagepublic class TestFragment extends XPageFragment {...}

2.而后在任意继承了XPageActivity或者XPageFragment类中应用openPage即可。

// 应用类名关上openPage(TestFragment.class);// 应用页面标识符关上openPage("TestFragment");

更多应用比照

更多应用内容能够参阅本我的项目源码, 我的项目地址: https://github.com/xuexiangjys/Navigation_XPage .

微信公众号

更多资讯内容,欢送扫描关注我的集体微信公众号!