青幼蕾,谭妙,童强,罗琪,孙怀琳,徐帅
(1.乐山师范学院 旅游学院,四川乐山,430047;2.乐山师范学院电子与材料工程学院,四川乐山,430047)
近年来,生活水平不断提高,社会压力也不断增大,所以越来越多的人出行旅游。很多人选择各种旅行社作为出行的中介,但是站在大多数人的角度来说,他们是不愿意在享受的时候受到约束的,所以有更多的人选择按照自己的规划出行。那么这些游客来到各地旅游应该去哪里看一看,去哪里吃一吃才会感觉到不虚此行呢?那么为各地的游客打造一款实用的APP就迫在眉睫了。在当今社会手机已经成为人们生活中比不可少的一部分,而各地的景点的信息大都只能在PC端上搜索到,在移动端上只能看到其他游客的一些评价。为了促进各地旅游的发展,还应注重移动端的开发[1],让用户能够直接了解到各地景区的最新资讯。旅游APP就为用户定制了各地旅游值得一去的景点,规划了游玩行程,挑选了来到当地不得不吃的美食,以及景点的地图定位,方便快捷。
本软件启动后进入主界面后,可以点击切换到“概览”、“景点”、“行程”以及“美食”四个界面,通过点击每个界面里面的控件或者item可以跳转到对应的Activity里面进行item的详细展示,再点击Toolbar中的返回按钮又可以回到主界面;在主界面里通过侧滑可以跳转到登录界面[2]。从上面的描述中总结起来,系统具有以下的功能需求:(1)正常启动APP;(2)显示主界面:概览攻略、热门景点、行程路线以及重庆美食和登录界面;(3)子界面展示:通过点击主界面的item能够跳转到Activity进行详细介绍。
Android最开始是使用Eclipse搭建的开发环境[3]。Android开发至今已有二十几个版本,现在很多人仍然在使用Eclipse,其实Google公司已经推出了新的编程工具Android Studio。与Eclipse相比,Android在构建程序界面更方便,编辑历史、打印日志更详细;添加了智能识别功能,并且资源文件可以在代码中进行预览。所以,今后的趋势更偏向于使用Android Studio。
进入Android开发者网站(http://www. androiddev tools.cn/)下载Android Studio,选择适合自己平台的Android Studio,最好是已经带了SDK和JDK[4],如图1的第一个。下载后只需要按照步骤直接安装,成功后就可以新建项目写代码了。
图1 Android Studio版本
本软件是一款旅游类型的软件,展示界面较多,本文挑了3个具有代表性的界面做详细介绍:
(1)在登录界面中有点击返回按钮(Toolbar)、头像、头像背景、用户名、密码以及登录和注册按钮。
(2)在MainActivity的景点这个Fragment的界面中有点击侧滑登录按钮(Toolbar)、底部导航、顶部导航以及景点的item。
(3)在美食点进去的Activity里面有前一个页面传递过来的美食图片,美食名字,美食简介以及美食的item。
根据以上三点,分别设计其界面布局,如图2所示。
图2 界面示意图
本软件中的数据基本上存储在数据库中,考虑到方便性和性价比问题,本软件使用的是云数据库Bmob[5]。Bmob有以下优点:第一点,能够轻松搭建数据库,可直接对数据库表进行增、删、改、查操作,它支持10种不同数据类型存储,例如String,Number,数组等;第二点,支持多种文件的上传和存储,例如图片、视频、音频、文档等,并且使用了CDN加速服务、多语言SDK和Bmob提供的API接口能够让数据快速上传,安全可靠;第三点,逻辑实现非常灵活,支持在线编写和调试代码,可轻松实现业务需求;第四点,支持定时更新,例如每天24点准时更新获奖名单,如果配合云逻辑使用,能够实现更加复杂的业务。
要使用Bmob云数据库只需要在它的官网上注册一个账号,成功后就可以申请创建数据库了。要将数据库应用到APP中需要获取对应的Key[6],下载对应版本的SDK并将其嵌入到移动应用中,便可操作了,程序模块如图3所示,源代码结构如图4所示。
图3 应用程序结构
图4 工程源码结构
应用登录界面是每个APP中必不可少的,它能够将用户对该软件使用的信息进行保存,方便用户再次使用,其界面设计如图5所示。该页面包括登录和注册两个功能,实现原理差不多。输入用户信息后点击登录时,第一步,判断是否输入用户名,若用户名为空,弹出“用户名不能为空”并返回。第二步,判断密码是否为空,若密码为空,弹出“密码不能为空”并返回,第三步,当用户名和密码均不为空时,去数据库根据用户名查找数据。第四步,判断输入密码与数据库查找密码是否一致,若不一致弹出“用户名或密码错误”;若一致弹出“登录成功”并跳转到主界面MainActivity[7]。由此完成登录功能。
图5 登录界面
以重庆为例,景点界面又有“重庆热门景点”、“红色之旅不可错过”、“巴渝文化之最佳体验地”、“重庆周边最美古镇”四个子界面,通过点击顶部的四个按钮来进行切换,其实就是一个顶部导航功能的实现,如图6所示。
图6 景点界面
行程界面的布局设计有两种类型,LinearLayout和列表,如图7所示。在这个界面中由于LinearLayout所需要的数据较少,可直接采用静态加载数据,就是在设置子控件属性的时候,数据均采用资源文件里面的。而列表中需要加载许多的数据,所以采用动态加载数据[8]。如果是字符串可以轻松加载,但是图片则非常麻烦,如果处理不好会出现内存溢出的情况,所有Android开发人常使用框架来完成。常用的图片处理框架有ImageLoader、Picasso、Glide、Fresco四种,在本软件中采用Picasso来完成图片加载,因为Picasso自带统计监控功能,支持优先级处理等。
图7 行程界面
美食界面其实主要展示的是两个列表,而且都是使用RecycleView来说实现的,如图8所示。RecyclerView是新出来的Android 5.0 materials design中的组件之一,它不仅提供了一种耦合度更低的方式来复用ViewHolder,还可以轻松实现ListView、GridView以及瀑布流三种效果,本设计中实现了前面两种效果。
图8 美食界面
(1)当什么都没输入或者只输入密码,点击登录或注册时,打印日志“用户名不能为空”。
(2)当没有输入了用户名没有输入密码,点击登录或者注册时,打印日志“密码不能为空”。
(3)当密码输入错误时,点击登录按钮会打印日志“用户名或密码错误”和输入错误的密码。
(4)当用户名和密码均输入正确时,点击登录或注册会打印日志“登录成功”
(5)当输入了用户名和密码,而该用户名已经被注册,这时点击注册会打印日志“该用户已注册”和注册的用户名。
(6)当输入用户名和密码,而用户名未被注册时,打印日志“注册成功”。
图9 测试效果图
本软件中几乎所有的数据都存储在云数据库中,所以都需要进行网络请求才能获取到。比如实现美食界面的网格布局列表,当进入该页面时,打印出数据条数和详细数据。
图10 网络测试效果图