视频介绍
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进行注解
@Pagepublic class TestFragment extends XPageFragment {...}
2.而后在任意继承了XPageActivity
或者XPageFragment
类中应用openPage
即可。
// 应用类名关上openPage(TestFragment.class);// 应用页面标识符关上openPage("TestFragment");
更多应用比照
更多应用内容能够参阅本我的项目源码, 我的项目地址: https://github.com/xuexiangjys/Navigation_XPage .
微信公众号
更多资讯内容,欢送扫描关注我的集体微信公众号!