Material Design旨在通过帮助设计师们创建易用性和实用性较强的网站和应用程序。这个概念基于一个不断更新的公开文档;该文档会随着域界以及技术更新而更新[6]。
Material design的设计目标:
创建一种新的设计语言,糅合经典设计原则以及科技创新性与可能性。
创建一个跨平台和跨设备尺寸集成系统。移动规则是基本的,但触摸、声音、鼠标、键盘都是最佳的输入方法。
Material design的设计原则:
材料即象征:视觉线索必须立足于现实。
醒目、形象、策划性:基本的设计原理(字体、网格、空间、尺度、色彩和图像的使用原则)必须引导视觉效果。
有意义的移动:移动的物体或动作不应该干扰用户体验,而是保证用户体验的连贯性。
2。7基于Retrofit的网络请求库
Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装。
使用Retrofit十分方便,我们只需要定义一个 interface,定义一些方法,并用相应的注解来标注它们,这样就可以使用了[7]。
我们以官方的例子简单做个解释,GitHubService 就是承担了网络请求的逻辑的 interface,它的每一个方法都是相应的 api,而我们在使用时,只需要使用 retrofit 来 create 一个这样的实例,那么我们就可以通过调用 service。listRepos 来访问我们想要的 api。
图2-5 retrofit请求示意图
retrofit。create 这一句实际上是使用了 Java 当中的代理机制,代理会处理被代理类实例的方法调用——这一点非常关键——代理在收到被代理类实例的方法调动时,则有根据对应的注解来构造网络请求,到底是 GET 还是 POST,有哪些参数,都叫什么之类的。论文网
Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作。同时还封装了网络代码的调用。另外,Retrofit可以十分方便的集成json解析工具,如Gson,Jackson。也能通过集成Simple XML来方便解析Xml。Retrofit对于错误处理机制也能很方便的集成,比如在遇到网络未连接的情况,或者用户未输入就提交的情况都能统一做反馈处理。过去我们在使用HttpClient的时候,觉得有很大不方便的就是如果进行请求,还需要在主线程外定义一个Handler,数据的请求解析需要通过另外开起一个线程,而不是在主线程中来做,因为这样会阻塞主线程。但是这样做,不太符合编码习惯。而我们使用Retrofit就可以很好的解决这个问题。Retrofit有成熟的异步处理机制,将请求封装在队列中,请求成功或者失败则通过回调的方式进行处理。
2。8基于Fresco的图片处理库
Fresco是Facebook推出的图片处理库,在图片处理和解析方面可以说是十分强大的。Fresco内部的image pipeline模块主要用于解析加载资源,使用三级缓存机制能够最大限度的节省空间和CPU消耗。Drawees模块可以用于很方便的显示加载图,如果图片不再显示时,及时的释放内存空间节约空间占用。
Fresco使用起来非常简单,在xml布局文件中,只要用SimpleDraweeView替代原生的ImageView即可,
以加载一张网络图片为例,如下图所示:
图2-6 Fresco使用示意图
只要这三句代码,Fresco就能自动完成图片的加载过程。
2。9小结
本章节主要论述了主要的知识点,介绍了本次毕业设计使用的开发工具。分析了基于maven和gradle的两种项目构建方式的特点,阐述了选择三大框架的原因,以及搭建基于RESTful风格的接口的优势。介绍了安卓端使用的网络请求库Retrofit以及图片处理库Fresco。下一章,我们就系统的需求进行分析,并介绍数据库的结构设计。