JokeAndroidClient MVP框架

[复制链接]
来自: MrlLee 分类: Android精品源码 上传时间: 2016-4-20 15:16:13
Tag:JokeAndroidClient MVP 框架

项目介绍:

JokeAndroidClient



It is android client about mvp framework. Maybe, it can help you to know how to use the mvp
这是一个基于MVP框架的应用,可以帮助初学者学习和理解MVP结构,并且还对比了使用EventBus替换回调接口的解决方案。



开发环境




  • Android studio 1.5.1

  • JDK 1.7

  • OS X 10.11.1

  • Smartisan坚果



Project Tree





  • cn.robertzhang.joke


    • app

    • config

    • model


      • dao

      • entities

      • helper


    • presenter

    • ui


      • activity

      • adapter

      • fragment


    • utils

    • view

    • widget





Why build this project?



This project can help you to learn MVP. Maybe could help you know what a good project of framework looks like too.



为什么会开始写这个项目呢?其实是受到一些优秀的开源项目启发,于是本着学习的态度开始了自己开源项目的建立和分享。该项目的名字为《逗逼与文青》,英文名为《DouBi VS WenQ》。在项目中将分别通过两种形式实现内容的展示。什么,为什么要分开它们?因为它们的气质使然。在参考了StarWars.Android,被她优雅的切换模式和双重人格所吸引。于是逗逼和文青两个角色就此被划分了。



DouBi



逗逼模块的灵感来源于一款Swift开发的仿”糗事百科“的开源项目JokeClient-Swift,有了数据一切就好办了。在不以私人利益的前提下,对该版本的“糗事”进行逗逼化。在这个模块中,使用了CoordinatorLayout、CollapsingToolbarLayout、Toolbar。他们具体的介绍和使用,感兴趣的朋友可以自行查看相关文档。SmartTabLayout+ViewPage为内容显示。
在DouBi模块中我们对MVP三个模块进行了隔离,采用EventBus来传递消息。这样做的好处在于模块完全解耦,UI,业务逻辑和数据层(因为懒并没有实现数据本地化)完全分开,真正的做到面向接口编程。不过在这里需要注意的是,EventBus在传递消息的时候是通过post中传递对象的类型来判断,Subscribe是否接受该处理。可想而知如果项目复杂度很高时承载消息的类将会有很多,幸好我们对EventMessage做了抽离。当然我们要付出必要的代价。可读性变低,每个类或者大模块间都需要对出口和入口进行定义实现。需要对项目有很深的理解和经验才能做到游刃有余。



WenQ



文青模块则是借鉴了同为Android开源项目ONE-Unofficial,这个项目高仿了ONE,很多布局也是直接拿来用的,当然如果对比你会发现实现的思路是不一样的。ONE-Unofficial中每个小模块中嵌套的都是ViewPager,在内容加载较多的时候会出现卡顿现象,于是我改为使用RecycleView。这样的好处是卡顿感明显减少了。
WenQ采用的是最传统的MVP模式,UI通过调用presenter接口的相关action,presenter对这些操作进行异步处理,结果通过回调的形式返回给UI,UI更新视图。听起来是不是很简单?没错MVP就是因为结构清晰才会被广为流传。



总结



个人还是觉得传统MVP的模式使用起来得心应手。对于小项目传统的方式完全可以满足我们的需要。当项目模块越来越多,且模块内部越来越庞大。这个时候我们可以考虑在这些独立模块之间建立EventBus来传递消息,从而保持模块独立性。



What it is look like



说了半天终于到了你们想看的东西。无图无真相。好吧,满足你们。



1、Doubi



image



2、WenQ



image



3、菜单



image



4、关于我



image



Thanks



Open project





Open source libs




  • Smarttable是table bar的完美解决方案 - compile 'com.ogaclejapan.smarttablayout:library:1.6.0@aar'

  • 图片加载和显示 - compile 'com.facebook.fresco:fresco:0.9.0+'

  • EventBus消息处理 - compile 'org.greenrobot:eventbus:3.0.0'

  • Greendao数据库操作 - compile 'de.greenrobot:greendao:2.0.0'

  • Butterknife绑定layout布局文件 - compile 'com.jakewharton:butterknife:7.0.1'



还有一些com.android.support和不常用的可以自行查看他们的作用



Update Record




  • 20160310 - 修改关于我,github,项目的跳转

  • 20160309 - 跟新Header显示icon;修改两种模式切换bug;添加网络异常提示;修改使用中出现的bug

  • 20160308 - 完成doubi模块,解决数据异常情况下的崩溃问题

  • 20160303 - 基本实现WenQ部分内容。待后续完善细节

  • 20160229 - 完善逗逼和文青界面,解决主题切换时出现的bug

  • 20160226 - add volley helper and json parser utils

  • 20160202 - 梳理app的ui结构

  • 20160128 - 调整commonlibraris的结构,添加recyclerview封装代码(以后用中文更新)

  • 20160121 - add common libraries


  • 20160119 - Init project




相关源码推荐:

我来说两句
所有评论(3)
奔跑2015 2016-4-24 17:09:25
很给力,安卓巴士有你更精彩!
回复
themeLove 2016-4-25 10:56:45
很给力,安卓巴士有你更精彩!
回复
weiwandaixu905 2016-5-1 14:13:31
很给力,安卓巴士有你更精彩!
回复
dahai_dahai 2016-5-4 14:54:11
虽不明,但觉厉!
回复
夏沫奏 2016-5-5 10:58:14
楼主威武啊,安卓巴士有你更给力!
回复
日出清晨123 2016-5-7 17:24:47
正需要啊,感谢楼主无私分享!
回复
jackchu 2016-6-16 18:19:58
膜拜大神~
回复
提取码:  下载次数:8 状态:已购或VIP 售价:10(原价:10)金钱 下载权限:初级码农 
1120 0 8
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿
帖子代码编辑/版权问题
QQ:435399051,1294855032
如何获得代码达人称号?
如何成为签约作者?
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )