zbmaster
zbmaster copied to clipboard
Funy-Gif-App with kotlin+dagger2+RxJava+RxAndroid+RxBinding
不无聊APP:GIF分享类的app,只为博君一笑
引用库
- kotlin-大部分使用kotlin语言编写
- RxJava & RxAndroid & RxBinding
- dagger2
- fresco
- retrofit2 目前由于服务器是第三方的所以暂时还未用到
注意:大部分是使用kotlin实现,但是由于dagger2生成的类在初期有点问题,所以dagger2部分使用JAVA,若要用纯Kotlin实现,请参考以下步骤
- module/build.gradle中修改 apt 'com.google.dagger:dagger-compiler:version-code'为 kapt "com.google.dagger:dagger-compiler:version-code"
- 参考文章: kotlin-dagger2
代码框架
以下github项目给与启发
- ribot by ribot
- MvpCleanArchitecture by glomadrian
- EasyMVP by JorgeCastilloPrz
- EffectiveAndroidUI by pedrovgs
###本APP的代码框架如图
简单说明下:
- view层:不论是使用Acvitiy还是Fragment还是ViewGroup实现,都需要实现一个View接口,暴露给presenter层调用
- presenter层:主要业务逻辑处理,不同的页面间通信的使用RxBus替换EventBus。好处是减少引入包,而且速度也快
- data层:这层就是各种数据来源,比如SharePerferencs、DB、还有各种服务器,主要是两类。
- 通过DataHelper获取简单数据操作类,比如PreferHelper保存部分数据到sharedPerference,也就是直接把数据操作的逻辑放在了Presenter中
- 具有复杂的数据操作过程的,实现Business对象,然后在Business对象可以封装各种不同的服务器API请求,如图,目前本APP使用的就是Bmob的免费服务器进行用户数据,GIF图标题等数据的保存,然后使用的是七牛的服务器保存图片,这样就是有Bmob提供的数据请求的对象,也有七牛提供的数据请求的对象,不同服务器调用方式也各不相同,但是都可以通过Business进行包装组合统一返回Observables,这样数据请求部分可以给熟悉服务器API的人写,presenter可以给另一个人写。
这样实现的一个好处呢就是DataHelper不会太臃肿,也避免了多人操作同一个对象带来的代码冲突,而且更换服务器也比较方便,修改对应的Business就OK
限于当前能力水平,初步设计是这样,如有什么提点或建议,随时欢迎留言或者联系本人QQ:617989237,在此跪谢了! ##如何使用此开源项目
-
在根目录创建appkeys.properties文件里面需要包含的内容:分别是Bmob服务器key,腾讯QQ的key
bmob_application_key="XXXXXXXXXXXXXX"
qq_app_id = "XXXXXXXXXXXXXX"
注:目前七牛的服务使用是非自定义域的,意思就是目前抓包可以获取到gif图地址直接访问.后面修改为自定域,那上面就需要添加七牛的key了 -
没有第二步了.
后台数据可以手动添加,也可以写一个管理后台。俺也写了个后台但是太简陋了就没有开源了,有需要的联系QQ:617989237.
##未来计划
- 引入测试框架
- 引入性能分析框架
- 实现更复杂的功能(自动升级,增量更新,划分更多的功能专区)
- 插件化框架引入
- 吸引更多有兴趣的朋友参与开发
- 添加电影预告模块