# 天气预报 APP 的设计与实现
# 一、需求分析
背景
天气信息和人们的日常生活息息相关,随着人们活动范围的扩大和出行需要,天气预报已经成为人们生活不可缺少的一部分,在这样的市场需求的基础上,本人设计了天气预报软件,它可以提供天气相关信息和生活指数,用户可以通过软件及时获取近期的天气状况和变化,及时做好各方面的计划和防护措施。
需求总体介绍
天气预报的用户主要是对获取天气信息有需求的人群,对于普通用户来说,主要了解当日的天气情况,选择相应的穿衣搭配和出行安排,对于相关行业人员来说,可根据未来天气状况制定相关措施,保证行业项目的顺利实施。因此天气预报的受众需要了解目前天气状况和未来的天气变化等,对其他的城市天气状况也会有所关注。
- 系统的功能性需求
- 自动定位当前位置,自动更新当前位置天气信息,也可查询不同城市的天气信息。
- 查询信息的结果主要包括温度、天气状况、风力、空气指数、生活指数等。
- 提供未来几天及小时天气状况并显示。
- 提供个人偏好设置,分享天气信息,关于本软件等。
- 用例图
![](https://www.writebug.com/myres/static/uploads/2022/6/6/169941781cadb667ca8629a7321de330.writebug)
系统的非功能性需求
用户界面需求
界面简洁明了,采用图标加文字结合的方式,易于用户理解,对于重要信息,放大进行显示,界面排列符合阅读逻辑。
软硬件需求
客户端操作系统:Android 4.0 及以上;
客户端硬件设备:Android 手机等移动终端
产品质量需求
# 二、系统设计
体系结构设计
系统功能模块划分
针对此天气预报 APP,按照设计的基本要求,可以将系统划分为下面几个功能模块:
天气显示界面模块
显示城市天气状况,包括温度,天气,风力,生活指数等信息,显示未来七天天气,及小时级天气。通过滑动切换不同城市的天气信息。
城市设置模块
编辑天气城市列表信息。
城市增加模块
用户可通过列表选择或搜索进行城市的添加。
分享模块
用户可通过分享按钮将天气信息分享给其他用户。
![](https://www.writebug.com/myres/static/uploads/2022/6/6/9a5ab1c3957e9ac8cc09bfb8b2814758.writebug)
数据设计
本软件数据库主要包含用户添加的城市数据,结构较为简单,由一个城市表组成。
人机交互设计
界面流设计
![](https://www.writebug.com/myres/static/uploads/2022/6/6/fcc631e91280c42834745cba6d7b049b.writebug)
功能界面原型设计
# 三、系统实现
系统目录结构
├─build
├─libs
└─src
├─androidTest
├─main
│ ├─assets
│ ├─Java
│ │ └─com
│ │ └─taimin
│ │ └─weatherforecast
│ │ ├─Adapter //适配器目录
│ │ ├─bean //bean 类
│ │ ├─db //数据库适配器
│ │ ├─fragment //fragment 文件
│ │ ├─utils //工具类
│ │ └─view //view 文件
│ └─res
│ ├─drawable
│ ├─drawable-v24
│ ├─layout
│ ├─mipmap-anydpi-v26
│ ├─mipmap-hdpi
│ ├─mipmap-mdpi
│ ├─mipmap-xhdpi
│ ├─mipmap-xxhdpi
│ ├─mipmap-xxxhdpi
│ └─values
└─test
系统功能实现
软件通过 activity+fragment 进行布局,通过控制 fragment 的切换来切换不同的页面,为了防止重复切换带来的卡顿,fragment 均进行了缓存处理。
天气预报主界面
界面展示
![](https://www.writebug.com/myres/static/uploads/2022/6/6/2a31b2d9ad43182dafcf9401cdddf4bd.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/6/1feda9a8673de532c55e0e8e9f667999.writebug)
主界面是一个 fragment,采用 RelativeLayout(顶部栏)+ViewPager 来实现不同城市天气的切换,通过对 viewpager 监听实现顶部栏城市及背景的切换,用户在进入 app 时系统会自动进行定位并将当前位置设置当前城市,具体代码为:
城市管理
![](https://www.writebug.com/myres/static/uploads/2022/6/6/a688e091667daff44e3f73bb2f90c69f.writebug)
用户通过点击主界面右上角图标即可进入该界面,用户可以通过该界面进行快速选择城市,删除城市等功能,选择城市后即可快速跳转到 viewpager 制定页面。具体代码如下:
城市选择
![](https://www.writebug.com/myres/static/uploads/2022/6/6/3bb31fa5e169b37df3610dd978fbc767.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/6/db271f3a04599920c2cb0a610d75e56a.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/6/5df2f13f52e1d5b46044e36a599f4330.writebug)
城市选择界面首先会进行定位,页面分为五个部分,分别为搜索栏,定位栏,热门城市,城市列表,侧边滑动条,用户可通过选择或搜索来完成城市的添加。部分代码如下:
天气分享
![](https://www.writebug.com/myres/static/uploads/2022/6/6/deb03a3bddb5a3a91570a056af2999f2.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/6/5a00a5ee1e88184c6123276be2e093c6.writebug)
用户点击页面的右上角即可进行当前城市信息的分享操作。具体代码如下:
雷达云图
![](https://www.writebug.com/myres/static/uploads/2022/6/6/f2c12d422fd8030b86093dfd21510a2c.writebug)
雷达云图功能采用 webview 方式,接入中国天气网雷达云图 h5 页面实现。
我的
![](https://www.writebug.com/myres/static/uploads/2022/6/6/23fa89a623fefdb53ec543f8f4fa695a.writebug)
# 四、总结
项目技术总结
整个 app 实现了对天气预报的获取、展示,位置的获取等功能。通过安卓网络编程的方式可以很方便的获取到天气 JSON 数据,通过使用 GSON 库,解析为我们软件需要的数据结构,给软件的编写提供了极大的便利。安卓的 Activity、Fragment、Service 等提供了强大的数据处理功能,使各个页面间可以灵活的传输数据。界面采用了 viewpager 与 fragment 结合的方式进行设计,每个 fragment 对应一个城市页面,可以通过滑动进行翻页控制。且为防止多页面造成的卡顿,app 会首先进行 fragment 的初始化缓存,使软件响应速度得到提升。
### 技术创新及特点
通过 GSON 库解析请求到的 JSON 数据,GSON 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符转成一个 Java 对象,或者将一个 Java 转化为 JSON 字符串,使用更加灵活。
对于一些通用的工具函数进行了封装,便于使用。
城市天气信息与软件背景对应更新,增加了软件的统一性。
采用下拉刷新的方式进行天气信息的更新,更加方便快捷。
### 个人收获与体会
经过本学期对 Android 开发的学习以及本项目的编写,使我学到了许多开发相关的知识,比如 Android 环境的搭建,Intent、Activity、fragment、SQLite 的用法以及网络编程相关内容。因为本学期同时开展了软件工程课程,使我对软件的工程化构建有了一个初步的了解,避免了以往编写程序时耦合高、软件功能未分离等缺点。同时也让我了解到了 Android 的布局方式,使我编写出了美观的软件界面。软件的编写不是一帆风顺的,在使用 view pager 做滑动切换时,我遇到了页面卡顿、数据不更新�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
系统的功能性需求 自动定位当前位置,自动更新当前位置天气信息,也可查询不同城市的天气信息。 查询信息的结果主要包括温度、天气状况、风力、空气指数、生活指数等。 提供未来几天及小时天气状况并显示。 提供个人偏好设置,分享天气信息,关于本软件等。
资源推荐
资源详情
资源评论
收起资源包目录
基于 Java 天气预报 APP 的设计与实现【100011103】 (164个子文件)
app-debug.apk 4.03MB
天气预报.apk 4.03MB
app-release.apk 3.38MB
gradlew.bat 2KB
移动软件开发-大作业.doc 3.76MB
高德天气api导入说明.docx 286KB
.gitignore 208B
build.gradle 1KB
build.gradle 558B
settings.gradle 50B
gradlew 5KB
AMap_Location_V4.9.0_20200302.jar 361KB
gradle-wrapper.jar 53KB
Main_fragement.java 10KB
CityPicker.java 9KB
AllCityListAdapter.java 9KB
CharacterParser.java 8KB
wea_fragment.java 7KB
SideBar.java 6KB
ReboundScrollView.java 5KB
MainActivity.java 5KB
DataBean.java 5KB
CityList.java 5KB
SQLiteHelper.java 3KB
ForecastAdapter.java 3KB
CitylistAdapter.java 3KB
HourAdapter.java 2KB
HourBean.java 2KB
SetForeCastBg.java 2KB
ReadAssetsFileUtil.java 2KB
Me_fragment.java 2KB
CityBean.java 2KB
SetForeCastImage.java 2KB
HotCityGridAdapter.java 2KB
WeaViewPagerAdapter.java 1KB
City.java 1KB
Radarmap_fragment.java 1KB
NetUtils.java 1KB
FragmentFactory.java 1KB
WeatherBean.java 1000B
AqiBean.java 912B
ParserJson.java 790B
ExampleInstrumentedTest.java 768B
IndexBean.java 731B
WeatherShare.java 663B
DBUtils.java 506B
MyApplication.java 389B
ExampleUnitTest.java 387B
BKeyComparator.java 356B
LocateState.java 240B
AreasBean.java 224B
CityPickerBean.java 220B
FragmentID.java 206B
BaseBean.java 123B
wea.jks 2KB
未命名文件.jpg 2.37MB
lei_bg.jpg 10KB
yun_bg.jpg 9KB
yin_bg.jpg 8KB
shachen_bg.jpg 8KB
qing_bg.jpg 8KB
yu_bg.jpg 7KB
wu_bg.jpg 7KB
xue_bg.jpg 6KB
city.json 534KB
output.json 234B
output.json 226B
LICENSE 1KB
README.md 8KB
bg.png 1.74MB
Screenshot_2020-06-01-12-47-27-34.png 1.13MB
Screenshot_2020-06-01-12-47-29-99.png 870KB
Screenshot_2020-06-01-12-47-35-40.png 325KB
Screenshot_2020-06-01-12-47-49-49.png 317KB
Screenshot_2020-06-01-12-47-23-83.png 311KB
Screenshot_2020-06-01-12-47-38-66.png 144KB
Screenshot_2020-06-01-12-48-00-30.png 90KB
Screenshot_2020-06-01-12-47-54-69.png 89KB
Screenshot_2020-06-01-12-47-42-93.png 52KB
ic_launcher_round.png 15KB
ic_launcher_round.png 10KB
ic_launcher.png 9KB
share.png 7KB
ic_launcher_round.png 7KB
xt.png 7KB
icon_bar_3.png 7KB
zwx.png 7KB
icon_bar_2.png 7KB
lei.png 6KB
ic_launcher.png 6KB
xc.png 6KB
search.png 6KB
kq.png 6KB
icon_bar_2_select.png 6KB
yin.png 6KB
icon_bar_1.png 5KB
qing.png 5KB
yu.png 5KB
ydpng.png 5KB
cy.png 5KB
共 164 条
- 1
- 2
资源评论
- Focus_Yuovo2023-05-01总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
神仙别闹
- 粉丝: 2708
- 资源: 7670
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- VHDL是VHSIC Hardware Description Language的缩写,全称是Very High Speed I
- Redis是一种流行的开源内存数据库,它提供了各种各样的命令和功能来处理数据 以下是一些常见的Redis命令以及它们的用法:
- 基于CYCLONE FPGA设计的出租车计价器Quartus工程VERILOG源码+课设报告文档.zip
- 基于C++的线段树和树状数组(免费提供全部源码)
- 使用 Redis 存储用户和他们的帖子.zip
- AI绘画实操(基础版)-推荐资料
- 基于SpringBoot+Mybatis+Redis的问答社交网站项目(免费提供全部源码)
- 基于springboot的新闻推荐系统带源码.rar
- 基于Web足球青训俱乐部管理后台系统开发带源码.zip
- 基于springboot的美容院管理系统.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功