提供包括activity、fragment、dialog等一些基础能力的整合和统一对外API的使用;以及Title、Toast、多状态View的统一工具View等。

页面承载

这边对activity、fragment、dialog进行抽取提供了统一的API使用,这样方便我们在后续业务实现的时候专注业务部分,以及对这几种页面形态的呈现基本不做实现上的区分,达到一致的开发体验。

API部分包括:

  • obtainContentLayout 内容布局提供者
  • initParams初始化参数(这边结合router后可废弃)
  • setupView 设置view相关
  • initViewObservable初始化view状态观察者
  • initData数据初始化

以上为基础承载页面对外提供的统一API,当我们新建一个页面承载的时候都可以按以上初始化步骤进行初始化业务部分代码。

BaseViewModel这部分代码参照MVVMHabit的mvvm模式进行实现。

Toast

吐司提示工具,实现了静态方法直接调用,在任意方法、线程中进行使用

Title

标题部分,这部分功能由开发者自行进行选配,如果页面承载部分需要标题,则进行装配,也可以使用Title系列的基础页面承载者作为基础继承。

在设计之初,想要的是实现可快速插拔实现Title部分;所以抽取一个TitleBarDelegate者进行Title的创建管理等。

  • DefaultTitleBarView 提供了一个默认的Title,带一个返回按钮,标题剧中。

开发者可继承TitleBarView开发特有的Title并集成,方便业务开发。

多状态View

在我们业务开发的时候,时常会友网络请求的场景;这时候体现在页面部分,则映射成请求中、请求后;请求后又分成功、失败、错误等。

StatusDelegate就是扮演的这样一个角色;想象下, 我们多状态View其实不是跟随着基础承载页面而是跟随着业务来的,所以这就期望我们的这个多状态是可以指定绑定对应View的关联,以及可以自定义加载、错误、空等状态页面。

通过StatusDelegate构建MultiStatusView达成上面所说的实现。

  • skeleton 骨架屏的展示,作为loading态的一种;在认知的loading态中骨架屏>loading动画>无反馈,体验反馈呈下降的。所以我认为骨架屏作为加载态还是有必要实现的,然鹅我还没找到方便的实现效果。

以上,基本以及实现完了一个简易版的ui部分。但是还是有很多可以进行提取的,包括返回事件、findView、列表等。这些个其实已经有很多优秀的第三方框架,我们只需要进行整合集成就行了。