先给客官来几张项目部分截屏
主页面
搜索页面
搜索结果页面
大图页面
为什么写这个客户端?
我学习android也有一年多了,都说项目才是检验自己学习成果的最好方式,正好最近学习Material Design, RxJava & Retrofit框架和MVVM设计架构也有一段时间了,正好,网络上有gank.io这个免费接口,虽然已经有不少人写过这个客户端,但是没有一个是用MVVM设计架构的,于是我便写了这个项目。这个项目是我的第一个上线项目,可以查看图片,视频,技术文章等,支持收藏,搜索等,界面是仿网易云音乐,用户可以选择观看模式和摇一摇模式,界面简洁大方,操作简单易懂。到现在,这是第一个也是唯一一个使用MVVM设计架构的Gank.io客户端,想想还是挺有成就感的。
这个项目用了什么?
项目使用了Material Design, RxJava & Retrofit框架和MVVM设计模式,图标是使用svg和icon.用的都是最新的东西。图片的加载是用picasso,显示是使用RecyclerView,控件用的几乎都是Material Design,并且遵从Material Design规格要求,使得整个界面看起来很有Material Design风格,页面架构采用的是少activity多fragment,减少资源的消耗和更快的响应页面间切换和交互,使得用户体验更好。
为什么用这些?
关于这个问题,我先回答我特别喜欢RxJava和MVVM,先说RxJava,这个其实主要是为了解决异步问题,特别是对handler厌烦的人而言,RxJava的出现实在是太及时了,RxJava不算一种框架,它不能拿来就使用,但是它特别好,因为它所实现的大概就是,你输入一个东西,然后输出你想要的东西,这么说可能很宽泛,举个例子,比如在这个项目中,你的输入是通过Retrofit得到的数据,而这个数据是一个类,但是你只想要其中的url,怎么办?RxJava就可以,你只需要使用map操作符就可以(当然在这个项目中我没有这么写,因为我不只是想得到url),而使用Retrofit就是因为它对RxJava进行了很好的支持,当然,它本身也很方便。然后就是MVVM了,这个框架也出现一阵子了,对于使用这个框架,就不得不介绍Data Binding Library
这个库了,这个库和mvvm一起使用,简直爽的不行,Data Binding Library
这个库能让你在xml中进行数据绑定,在没有使用这个库之前,每次我们写xml都只是为了加载一个布局,除了这个功能,xml几乎没有别的作用,这样就让代码变得复杂、繁琐。那么如何使用这个库呢?我的建议是去官网,当然至于如何翻墙,我就不说了,毕竟僧多肉少(#阴险),如果不会翻墙或者不想看英文的同学,这里我推荐去看简书。 而对于为什么Material Design
,只能说,谁用谁知道,毕竟是官方的东西。
你能从这个项目中学到什么?
1.RxJava和Retrofit结合进行网络请求,以及如何将请求和ProgressDialog结合,也就是展示网络请求的过程。
2.如何更好的在项目中使用Data Binding Library这个库来实现MVVM设计架构。
3.如何实现少Activity多Fragment页面架构,以及如何在一个Fragment中更好的嵌套另一个Fragment。
4.在Viewpager
下更好的使用Fragment
,以及多重ViewPager嵌套下,各个Fragment的处理方式,几乎涵盖了Fragment的各种使用方式以及和activity交互方式,比如,优雅的控制让Fragment自己决定处理返回事件还是让activit
y来处理。
5.一些简单的自定义View,比如自定义Edittext实现带有清除效果的搜索框。
6.Material Design库中绝大部分控件的使用,遵从Material Design规格要求,使得整个界面看起来很有Material Design风格。
7.如何让RecyclerView和Data Binding Library更好的结合。
8.如何更好的封装程序以及继承,让业务层和逻辑层更好的分离。
9.这个项目用的都是最新最火的框架和设计模式,所以你以后肯定会用到,而且在很长的时间里都不会有"过期"这一说(当然,知识是没有过期这一说法的,原谅我语文不好)。
10.我现在大四,也就意味着我有很多自由的时间,如果你在看我项目的时候遇到任何问题都可以和我联系,我会尽快给你回复,而且由于我技术比较菜(#谦虚),所以没有专家盲点(指对一个事务知道的越多,就越发不记得"不知道这个事"的情形),也就能更好的回答你们的问题(第一次将自己技术菜说的这么清新脱俗#害羞)。
地址:
Github:https://github.com/sakurajiang/RestAPP
应用宝 :http://sj.qq.com/myapp/detail.htm?apkName=com.example.jdk.restapp
个人博客 : https://sakurajiang.github.io/
最后
欢迎各位客官多多光临我的Github,喜欢这个项目的同学可以star一下,不胜感激,你的star是对我的肯定和鼓励(#调皮)。
目前我只放在了应用宝上,喜欢的可以下载支持下,不方便在应用宝下载的,在Github上还有直接下载地址。
如果你看到了这里,说明你已经看完这篇博客了,谢谢各位花时间看这篇博客,最后再来几张截屏,Good luck!