Gc(game circle 游戏圈) app开发总结
声明:Gc是本人利用闲暇时间开发的一款开源app,所有代码开放开源,不会也不允许任何人作为商业用途。
Gc总体数据来源:首先Gc大部分数据是来自多玩论坛网站数据,对于lol相关查询来自http://API.xunjob.cn/提供的免费API(不知道怎么了 目前访问不了了),段子内容来自http://api.avatardata.cn/Joke/提供的免费API,美女图片资源来自http://gank.io/api/提供的免费API,数据存储服务提供由leanClound提供免费的数据存储。
GC总体设计思想:app整体数据采用jsoup结合RxJava实现对多玩论坛数据对抓取,通过jsoup访问多玩论坛网站,返回html树,通过jsoup结合Rxjava解析,生成数据model,然后根据自己设定的UI显示在客户端,由于个人能力问题,不能解析到多玩论坛的登录注册流程,本人对多玩的数据只能实现浏览的功能。后来通过leancloud RestAPI数据存储的支持,本人自定登录注册,帖子收藏等功能,实现了用户可以在本app上进行注册,登录,设置用户头像,评论图片的功能(其实某头条就是这样哈,就是把别人的网页拿来给用户看,在自己的服务器进行评论等功能。。。),首页banner则是通过RxJava结合Retrofit发起请求访问LOLAPI,查询LOL数据。
GC的UI架构,UI架构是采用底部导航栏加上fragment切换实现。所有activity,fragment,model均继承基础类,实现了整体功能,风格上的统一,
Gc app本人认为你能学习到点:
1:首先是对父类的抽取,所有常有的方法,常量放在父类中,方便调用,虽然很多人都是知道的,但是仍有初入开发的小白不太了解,
2:自定义ViewGroup,个人感觉最酷炫的特效就是自己写了一个loadingView(对,就是你看到那个一个笑脸在吃豆的加载动画),这个loadingView只有那个笑脸是imageView,其余全是自己写的View,放在一个ViewGroup,结合ObjectAnimation实现了笑脸从左至右的吃豆,自身的alpha不断加深的动画,(这里你可以学到自定义ViewGroup,自定义ViewGroup的onmeasure,onlayout,Animation的使用,弱引用,handler结合Runnable实现持续的功能)
3:自定义View(全部都在widget包下面),
(1)首先是底部导航栏,巧妙的结合animation通过一张颜色的图片实现了点击效果的切换。
(2)lableView:类似于支付宝上面的斜着的标签,这个是我在Github上看到别人开源照着写的一个,整体代码都一致,只是作为个人练习,就是把别人的代码拿来学习,消化,这个view我之前还试着写过,效果不是很好(之前自己是通过drawRound+drawText就是在矩形上写文字,效果很不好,测绘也很难,这个人的思路很好,写在path上,path设置背景色,真的很有才,唯一的缺点是我忘了这个人github了不能去看)
(3)圆角图片这个上面的方法是通过重写imageView在onDraw之前在它的Layer上画一个圆角,后来问学习了解了更多的方法,一种是通过drawable实现,这是hongyang大神的博客上面的,还有一种是通过xperformMode的模式,这个网上还是有很多例子的。(就了解这么多了,大家可以补充)
(4)通过ItemTouchHelper实现了recyclerView位置变幻,这个也是看了别人的博客自己消化理解到。
(5)剩下那些view一般都是简单的自定义View结合动画自己写着玩的。
(6)推荐一个很好的网站,这个人写的真的超赞http://blog.csdn.net/harvic880925/article/details/38875149
最后本人在项目中练习学习到的东西:首先就是android app的整体架构,工具类的抽离,RxJava+retrofit + restAPI使用,MVP架构的练习,自定义View,自定义ViewGroup,业务的流程,recyclerView实现下拉刷新,上拉加载更多,一些简单的设计模式的使用,公共组件抽离,android5.0转场动画的使用,android5.0新引入兼容包的使用,一些新部件的使用。。。。(应该还用了很多新的知识点,有点忘了,就不一一列举了,大家在项目中自己看吧)
希望我这个完成了90&%的项目能给大家一定帮助。
最后附上项目地址:https://github.com/bolevw/GC.git