项目简介 - xuexiangjys/XPage GitHub Wiki

api I Star

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注解一键自动注册。


特别感谢

https://github.com/lizhangqu/CorePage