文章目录

  • 引言
  • 《云游APP》项目框架搭建
  • 《云游APP》功能需求分析
    • 云游用户信息功能需求
    • 云游主页功能需求
    • 云游用户足迹功能需求
    • 云游搜索功能需求
    • 云游个人中心功能需求
  • 《云游APP》技术可行性分析
    • 云游APP信息存储方式
    • 云游APP的UI设计
    • 云游APP的网络连接
  • 《云游APP》技术难点及实现
    • 碎片Fragment的理解与运用
      • Fragment实现云游底部导航栏
      • Fragment与Activity的信息交互
    • RecyclerView的理解与运用
    • 旅行风景图片的上传与存储
  • 《云游APP》设计效果
    • 用户注册页面
    • 用户登录页面
    • 主页界面
    • 足迹界面
    • 用户界面

引言

对于安卓的课程设计,自主选题设计,我的选题是做一款关于旅游的APP取名为《云游APP》。

《云游APP》项目框架搭建

MVVM(Model-View-ViewModel)是一种高级项目架构模式,目前已被广泛应用在Android 程序设计领域,类似的架构模式还有MVP、MVC等。简单来讲,MVVM架构可以将程序结构主要分成3部分:Model是数据模型部分;View是界面展示部分;而ViewModel比较特殊,可以将它理解成一个连接数据模型和界面展示的桥梁,从而实现让业务逻辑和界面展示分离的程序结构设计,其中MVVM项目架构如图1所示。
在MVVM项目架构示意图中所有的箭头都是单向的,比方说UI 控制层指向了ViewModel层,表示UI控制层会持有ViewModel层的引用,但是反过来 ViewModel层却不能持有UI控制层的引用,其他几层也是一样的道理。除此之外,引用也不能跨层持有,比如UI控制层不能持有仓库层的引用,每一层的组件都只能与它相邻层的组件进行交互。

《云游APP》功能需求分析

云游用户信息功能需求

首先是对云游APP的用户信息功能分析,云游APP是面向用户的。所以APP需要实现用户信息的保障,也就是用户的登录与注册。如果是新用户,则首先需要进行新用户注册,然后通过账号与密码进行登录,已注册用户则可直接通过账号与密码进行登录。

云游主页功能需求

在云游主页中,需要实现的主要功能有热门风景照的展播,旅游信息的查询,旅游热门景点的推荐。在风景照的展播中需要实现自动图片的自动轮播;在旅游信息的查询中,需要APP可以为用户提供各地的景点、周边酒店、相关攻略等信息;在热门景点推荐中,云游APP需要向用户展示热门景点的图片以及地理位置等信息。然后在主页中合理布局三者,以实现不错的UI效果。

云游用户足迹功能需求

云游APP的用户足迹页的设计构想是用户可以以多样的方式将自己去过的旅游地点记录下来,记录的内容可以是某次行程的具体信息、个人心情以及旅游风景照。在效果上类似于翻阅新旧相册,同时查找定位出某个去过的旅游地点。此外,用户还应可以对旅游地点的相关信息进行修改。这部分功能可概括为用户旅游足迹信息的增、删、改、查这四部分功能。

云游搜索功能需求

云游APP的搜索功能主要用于满足用户网页内容搜索的需求,这部分是为了拓展云游APP功能,用户可以在这部分通过网页搜索的形式查询相关的旅游信息。

云游个人中心功能需求

云游APP的个人中心为用户提供了用户个人头像设置,用户个人信息显示、用户个人信息修改以及退出登录等功能。这用户个人中心中,用户对于个人头像的设置有两种方式,一种是打开手机相机,实现拍照;另一种是通过打开自己的手机相册,选择相应的图片作为头像。

《云游APP》技术可行性分析

云游APP信息存储方式

云游APP根据设计功能需求,需要对用户信息、旅游足迹等信息、热门景点信息进行存储。其中,旅游足迹信息包括了旅游地点、所在城市、旅游时间、旅游心情、旅游备注、旅游风景照六部分。对于旅游足迹信息的存储方式可以使用轻量级的关系数据库——SQLite数据库。SQLite运算速度快,占用资源少,可存储大量复杂的关系型数据,因此,云游APP可采用SQLite对用户信息、旅游足迹信息进行存储。

云游APP的UI设计

在云游APP的UI整体框架设计中,在主页的热门景点推荐,旅游足迹相册式展示的设计中都用了RecyclerView。RecyclerView滚动控件可以为云游APP提供更为丰富的信息展现方式,在热门景点设计中,可以通过RecyclerView的纵向滚动功能实现热门景点信息的纵向滑动查看;在旅游足迹展示方式设计中,可以通过RecyclerView的横向滚动功能实现旅游足迹信息的横向滑动查看。
在云游APP的整体UI框架采用了碎片——Fragment。 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理,从而可以更加方便地在运行过程中动态地更新Activity的用户界面。在云游APP的设计中有四个Fragment,分别主页Frangment、足迹Fragment、搜索Fragment与个人中心Fragment。通过这四个Fragment的使用,我们便可以在其对应的布局文件中设计各自的UI界面,以达到期望的实现效果。

云游APP的网络连接

根据功能需求设计,云游APP需要与互联网网络相连接,以满足与丰富用户的体验感。如果用户在使用云游APP的过程中不能上网,这会极大地降低用户使用的体验感。所以,在具体功能设计中,在主页界面,用户可通过相关链接跳转到相应的网页;此外,在搜索页,可以通过WebView加载百度的搜索网页,以满足用户更多旅游信息的检索,这同样是对云游APP的功能丰富。

《云游APP》技术难点及实现

碎片Fragment的理解与运用

Fragment实现云游底部导航栏

在用户成功注册并登录后,就会进入云游APP的主界面。在主界面设计中,采用底部导航栏的方式,将主界面功能划分为主页界面、足迹界面、搜索界面以及个人中心界面,这样便极大地拓展了云游APP的功能。底部导航栏的实现采用Fragment与RadioGroup+RadioButton的组合方式,以实现底部导航栏的效果。
首先需要准备四组RadioButton按下与未按下的效果图,放入图片Drawable资源中,并编写相应的xml程序。然后是layout页面布局的设计,其中使用到了RadioGroup与RadioButton控件,并设置相应的参数,此外,还需添加Fragment布局,并设置其ID号。
这样便完成了页面布局设计,接下来需要建立四个Fragment类,分别为MainFragment、FootFragemt、ForwardFragment与PersonFragment,此外,还需要建立四个与之相对应的Layout布局文件。因为Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响。所以我们在MainActivity中对四个Fragment进行管理,主要是通过检测单选按钮的状态来切换到不同的Fragment以及对应的layout布局页面,其中借助了FragmentManager来管理四个Fragment的使用。

Fragment与Activity的信息交互

Activity传递数据给Fragment,其大致过程如下,在Activity中创建Bundle数据包,调用Fragment实例的setArguments(bundle) 从而将Bundle数据包传给Fragment,然后Fragment中调用getArguments获得 Bundle对象,然后进行解析。
Fragment传递数据给Activity,其大致过程如下,在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口, Fragment就可以通过回调接口传数据。

RecyclerView的理解与运用

RecyclerView主要用在主页的旅游景点推荐与旅游足迹信息的展示中使用,首先需要在布局文件中加入RecyclerView控件,然后需要设计相应的适配器,在云游APP中他们为SpotAdapter与FootAdapter,然后重写继承RecyclerView.adapter的三个方法,其中包括了RecyclerView对应子布局的控件绑定等步骤,RecyclerView子布局与适配器相连接,然后设置RecyclerView的滑动效果,最后调用相关方法实现。
在旅游足迹信息修改功能实现时,需要实现单击相应旅游足迹信息并跳转到信息修改页面,这部分功能的实现过程如下,通过适配器的onBindViewHolder函数中添加单击的响应事件,在其中使用Intent完成页面的跳转。

旅行风景图片的上传与存储

在云游APP中图片的上传与存储也是一大技术难点,在旅游足迹信息需要用户上传旅行地点的风景照,在个人中心里需要用户设置个人头像。旅游足迹信息的旅行图片
上传会打开手机的系统相册,用户可通过选择相应的图片,然后通过旅游信息添加功能,图片将被自动保存在SQLite数据库中,而对于个人中心中的头像设置则是采用SharedPreferences存储技术实现的。
图片不能直接在数据库中存储,需要先对图片进行base64编码,将一副图片数据编码成一串字符串,使用该字符串代替图像地址,同时需要将Sqlite数据库中的存储类型设置为BLOB类型。而在需要图片显示时,再将该字符串转变为图片形式。
除了使用SQLite数据库外,还可以使用SharedPreferences来保存图片数据,保存的形式同样是图片经过base64编码后的字符串。而在需要图片显示时,再将该字符串转变为图片形式。

《云游APP》设计效果

用户注册页面

用户登录页面

主页界面

足迹界面

用户界面

安卓课设<<云游APP>>相关推荐

  1. 安卓课设——网上购物

    安卓课设--网上购物 实验目的 模块介绍 数据库设计 4.2程序流程图 实际图片 总结 实验目的 1.掌握Android 中的菜单及导航框架. 2.掌握自定义布局. 3.掌握 Android 中的数据 ...

  2. 【安卓课设】简单分析本次课设

    目录 1.课设简介 2.课设所用到的开源控件的汇总 2.1所用到的依赖包 2.2各个开源控件Github地址 3.课设所用技术 3.1安卓端 3.2后端 3.3关于前后台交互 4.最终效果展示 5.实 ...

  3. 基于ZigBee+ESP32+MQTT+EMQX+TomCat+Servlet接口+MySQL+安卓app的物联网课设

    文章目录 一.写在前面 二.课设简介 三.不眠夜开始了 1.基于zigbee网络数据采集的底层实现 2.基于ESP32和mqtt协议的数据上传功能 3.使用EMQX作为MQTT服务器软件 4.使用Ja ...

  4. django实现websocket作为安卓开发后台(软件课设,oo聊天)

    主要用到django,dwebsocket,mysql(这里给个大致流程,帮助有类似需要的同学指明方向) 没有想象的那么难,作为安卓端后台服务器,首先要搞明白干啥 1,建立连接,处理数据(其实就这俩, ...

  5. [Android 课设] 一款星座运势查询APP(前言)

    [Android 课设] 一款星座运势查询APP(前言) 前言 熬了几个夜,终于肝完了课设,今天答辩我是第四个,好家伙前面和后面全是大佬,就我一个简简单单连个登录注册都没有的不像APP的APP夹在中间 ...

  6. Android课设之校园二手交易app

    好了,这学期的Android课设基本完工了,我这次选取的是校园二手交易的主题.好了,相信大家也都等不及了,接下来直接进行演示了.代码已经上传到GitHub上,链接为https://github.com ...

  7. 湖南大学基于SMTP和POP3的邮件系统——计算机网络课设

    基于SMTP和POP3的邮件系统,创新点较多,课设得分很高 这是2022年春季-软件工程19级计算机网络课程设计内容,下方的文档是本项目的需求文档. 本项目的所有代码(安卓端+Web端+服务端)已经完 ...

  8. java课程设计进程管理_Java课设总结(个人版)

    使用物理引擎JBox2D完成游戏关卡的各个物理状态模拟 根据物理引擎设计Bird,Pig,Brick等游戏中出现的可运动刚体类 建立JBox2d的工具类以实现 ###本人对这次课设的看法与吐槽 1. ...

  9. 基于STM32的智能温室控制系统仿真电路设计(温控补光)-基于STM32的智能蓝牙温控风扇控制系统设计-基于STM32的无线蓝牙心电监护仪系统设计【毕设课设分享】

    1609 基于STM32的智能蓝牙温控风扇控制系统设计-毕设课设 1.LCD1602液晶显示当前温度,温度上下限值,风扇等级,自动手动模式: 2.设置有4个按键,按键1可以设置自动和手动2种模式切换: ...

最新文章

  1. OpenCV 【十二】OpenCV如何扫描图像、利用查找表和计时
  2. win7旗舰版下配置IIS服务器
  3. 【Python】Excel处理
  4. | 一文读懂迁移学习(附学习工具包)
  5. scrapy爬虫系列之五--CrawlSpider的使用
  6. 计算机网络概述(一)
  7. 有两个关于内部类(Inner Class)的示例
  8. 静止一秒_生命静止前的那一秒,我们并不是无能为力...
  9. 计算机排名考研,计算机考研学校排名
  10. async 和 await 关键字
  11. OpenCV精进之路(二十一):实例——去除发票上的印章
  12. Android Window 9问9答
  13. 谷歌ai人工智能叫什么_Google I / O 2017的“ AI First”口号
  14. java判断字符是否为0_Java判断字符串是否为空
  15. 视频教程-Mugeda(木疙瘩)H5案例课—快闪制作-HTML5/CSS
  16. 软件测试动态分析,静态分析工具和动态测试工具
  17. 算法题目打卡:Ques20201019
  18. XHTML的目标,规则和细节
  19. 【C++学习笔记】特殊用途语言特性
  20. 一个非常好的资源网站

热门文章

  1. 基于Vue实现验证码
  2. 8图教你如何配置 SNMP
  3. STM32CubeMX学习笔记——STM32H743_硬件I2C
  4. dedecms后台验证码显示不正常的四种处理办法
  5. 中国第三方物流需求决策研究
  6. “我的电脑”地址栏不见的处理方法
  7. python爬取所有股票报道
  8. 求「软考中级评测师(第二版)」资源
  9. html+css、JS阶段总结
  10. Linux x86-64 IOMMU详解(二)——SWIOTLB(软件IOMMU)