7

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

 3 years ago
source link: https://segmentfault.com/a/1190000027076546
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

发布于 2020-10-05
  • 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,拿到手就可以用了。

如果你想集成到自己的项目中,可以参考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 .

微信公众号

更多资讯内容,欢迎扫描关注我的个人微信公众号!
在这里插入图片描述


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK