乐趣区

关于android:Google官方Fragment页面框架Navigation和XPage开源框架的使用对比

视频介绍

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

简介

  • Navigation 简介

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

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

  • XPage 简介

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


个性比照

比照个性 Navigation XPage
注册形式 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 进行注解

@Page
public class TestFragment extends XPageFragment {...}

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

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

更多应用比照

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

微信公众号

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

退出移动版