分享一个基于MVP+Retrofit+RxJava+MaterialDesign的App

627 查看

2016已经荒废了一半,还有一半可以继续浪费。

源码我已经上传到github上了,欢迎fork和star
https://github.com/PleaseCallMeCoder/PrettyGirls

我想说的

最近一直在忙项目的事,所以很久不写博客了。抽时间整理了下最近的收藏的一些文章,感觉新的知识点还是挺多的,于是乎自己抽时间写了一个简单的App。为什么说它简单呢?因为这个app只有四个页面而已。有人说了,这么简单你还写?答曰:麻雀虽小,五脏俱全。这个App基本包含了开发一个项目用到的所有元素。写这个app的目的如下:

  • 将rxjava、retrofit、mvp、materialdesign等知识点做一个简单的整合
  • 封装一个通用baselibrary,方便以后构建项目,而且可以不断完善这个library
  • 不断优化,不断重构,因为模块少所以重构起来比较方便
  • 抛砖引玉,三人行必有我师,希望大家多多指教

你想知道的

说完了我想说的,说说大家可能想知道的。

一个项目的完整流程如下:痛点–>分析–>原型–>UI/UE–>设计–>架构–>测试–>构建–>QA–>运营–>迭代。这里我们重点关注架构,并不是因为架构最重要,而是因为本文的重点是这个App的整体架构。

项目结构

这里我用了MVP模式配合多模块Activty+多Fragment的思路。对于MVP和Fragment的有点这里我就不过多介绍了。我简单说下我的实现思路。

封装一个baselibrary

我们可以利用以往项目经验分模块分类别封装出一些父类,完成公共操作,后续开发只需要继承这些父类就可以完成大部分操作,节省开发成本。这里我封装了:

  • 包括普通activity和支持右滑退出当前页面的activity父类(退出方式类似qq)
  • activity管理栈
  • fragment的基类
  • adapter的基类

这个library基本已经满足了这个App的开发。但是没有最好只有更好,这个baselibrary我会不断完善和优化,以满足更复杂的需求。

分包

这里我采用的是按模块来划分包。包括以下几部分:

  • app

    包括全局异常处理,系统常量,和app的基本配置等。

  • 模块包

    每个模块包含一个契约接口,本模块的一个activity和多个fragment,presenter的实现类等,当然如果模块比较复杂还可以再继续分

  • data

    提供app的本地或者远程数据,数据模型等

  • util

    工具类

  • widget

    自定义控件

依赖库

至于依赖库的选择个人认为因人而异,我使用的库如下:

butterknife————View注解库和配套插件android-butterknife-zelezny

retrofit+okhttp————网络请求相关

gson————google推荐的json数据解析库

glide————google推荐的Android图片加载库

RxAndroid+RxJava——Rx函数响应式编程中文文档

compile ‘com.android.support:design:23.0.1’————谷歌Material Design控件库

关于App

app截图

github

下载

鸣谢

代码家-干货集中营

OXO

所有开源的人