视频讲解
简介
XPage是一个非常方便的fragment页面框架!天下武功,唯快不破,XPage最大的特点就是快,提高开发的效率!XPage设计的初衷是希望能做一个通用的Activity作为壳,Fragment作为页面填充展示,并且能够像Activity那样自由的切换和数据交互。
特征支持assets下“corepage.json”静态配置Fragment页面信息。
支持Application中动态配置Fragment页面信息。
支持通过注解@Page的方式动态自动配置页面信息。
支持自定义Fragment页面信息配置。
支持4种默认Fragment页面切换动画。
支持Fragment页面间参数传递。
支持Fragment页面属性保存。
支持Fragment页面的onKeyDown、onFragmentResult等生命周期
支持Fragment和Fragment页面自由跳转以及数据交互。
支持导航栏通过注解的方式自动添加及设置。
支持进行内存泄露监测。
支持自定义TitleBar全局主题属性。
支持自定义Fragment页面容器。
支持自定义Activity页面容器。
支持Fragment之间、activity和fragment之间的数据交互。
兼容kotlin和androidx。
设计原由
当初做Android开发时每当我写一个页面,都需要创建一个Activity,并且还需要在manifest中注册一堆Activity信息,这样既不方便,而且对资源的开销也比较大。因此当时我就设想能否创造出一个通用万能的Activity容器,可以全权负责Fragment的切换展示和数据交互,只需要一行代码即可完成所有的操作,还不需要自己手动去注册,可以一键生成。
设计思路
刚开始的时候真的很难,没有什么好的思路,最初只是简单封装了一个Activity,通过传入一些key值从而获取并加载对应的fragment,类似ARouter中Fragment发现那种。其实这样做并没有解决一个容器的问题,而且页面切换也不是很灵活,不够通用,使用起来也不是很方便。
突然有一天我发现Github上有个开源项目CorePage写得非常好,完美地解决了我对一个Activity容器的问题,于是我决定仔细研究其代码,并在其基础上设计出了XPage的最初版本。
就在XPage正式投入使用的过程中,我发现还是存在不少问题的:1.对外API不够灵活,使用起来不够方便;
2.每个Fragment仍需要手动注册,很麻烦;
对于API不够灵活的问题,我在之后的版本中陆续通过构造者模式设计以及Android主题属性等手段解决了。
而对于手动注册的问题,我正是借鉴了ARouter的思路,通过Android APT技术,从而实现了Fragment信息的自动注册。
解决痛点只需要一个Activity容器就可以实现多个页面的交互。
Fragment自由切换和数据交互。
无需在manifest中注册一堆Activity信息,通过@Page注解一键自动注册。
集成指南
添加Gradle依赖
1.在项目根目录的build.gradle的 repositories 添加jitpack仓库allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2.在dependencies添加引用
以下是版本说明,选择一个即可。androidx版本:3.0.0及以上dependencies {
...
// XPage
implementation 'com.github.xuexiangjys.XPage:xpage-lib:3.0.0'
annotationProcessor 'com.github.xuexiangjys.XPage:xpage-compiler:3.0.0'
// ButterKnife的sdk
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
}support版本:2.3.0及以下dependencies {
...