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
gson————google推荐的json数据解析库
glide————google推荐的Android图片加载库
RxAndroid+RxJava——Rx函数响应式编程中文文档
compile ‘com.android.support:design:23.0.1’————谷歌Material Design控件库
关于App
app截图