Android 实战制作简易天气预报

天气预报

创作不易,可否给作者点个赞再走

在这里插入图片描述
临近期末,Android需要交作业所以做了一个比较简单的app,小白勿喷

涉及知识点

容器类布局RelativeLayout,LinearLayout

基础控件的绘制和使用

TextView:显示文本内容
ImageView;设置图片
Button:按钮
EditText:接受客户输入内容

复杂控件的绘制和使用

lIstView:显示列表数据控件,使用设配器填充内部内容
	BaseAdapter的使用
	通知适配器,数据更新方式
	设置点击监听
GridView:显示网格数据控件:与listview相同
ViewPager:可左右滑动,包含多个view或者fragment的控件
	FragmentStateAdapter使用
	需要网页发生变化时,提示适配器更新
	设置滑动图标指示器
	设置滑动监听
GardView:androidX包含的控件,用于LIst View的每一个item的容器类布局,可制作卡片式效果,包含自带属性,需要导入appNs域名

Activity

创建、绑定布局
生命周期
跳转与传值

Fragment

加载进入viewPager的方式
Activity向Fragment的传值方式

数据储存

数据库操作
SQLiteOpenHelper的创建和使用
SQLiteDatebase函数的使用
创建表、增删改查
共享参数存储
数据获取、存储
切换页面壁纸

第三方框架

XUtils:封装完善的多功能框架,本项目用于网络获取数据功能
Gson:解析json数据的框架

界面展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

软件功能前期分析

1.根据天气预报接口,获取网络数据
2.展示选择城市的天气情况,温度,风向,各种数据以及未来基本天气情况
3.将网络获取的城市天气信息保存到数据库中,便于无网络进行数据请求
4.对数据库中的城市天气进行增删改查
5.根据LocationManager api获取当前位置位置经纬度,再通过全球逆地理编码api获取网络数据,进而解析出当前所在位置信息

难点分析

1.动态添加VIewPager对应小圆点指示器
切换界面时,刷新数据库数据
3.返回主界面时,改变ViewPager数据源页面的功能
4.改变首页背景图片
5.获取当前位置并显示在主页面

页面切换逻辑

1.应用启动时,进入主界面,拓攻获取数据库的城市信息,获取网络数据,展示在Fragment中,在View Pager中滑动,点击加号按钮,跳转城市管理页面,点击更多页面,跳转更多按钮,跳转设置页面
2.城市管理页面,展示数据库存储的城市天气最新信息列表,点击返回按钮,返回上一级页面,点击加号按钮,跳转搜索更多城市界面,点击编辑按钮,跳转删除城市界面
3.搜索更多界面城市界面,网络展示热门城市名称,点击期中每一项,可跳转主界面,在主界面显示增加的城市信息,也可输入城市名称,点击搜索按钮,判断是否存在该城市信息,存在跳转主页面展示信息,否则提示用户重新输入
4.删除城市页面,展示数据库存储的城市名称列表,点击每一项的垃圾同按钮,可从数据库中删除记录,点击错号,弹出提示器,点击对号,从数据库删除操作的记录,并返回上一级城市管理界面,并且上一级页面也是显示删除后的数据信息,在返回上一级主界面,显示依然为操作后剩余的城市信息
更多设置界面,包含功能,更改背景颜色,清楚缓存数据,获取版本号,分享软件等操作

所使用的天气预报接口为https://www.juhe.cn/docs/index/otherid/1

免费一天一百次,建议自己申请一个,个人经验有时候调试一百次根本不够用,请求不到数据时会闪退,可以在数据库里存入上一次的数据,但是次数用完了就不能实时更新;
**

我申请的key同时用的人太多啦已经不能用了,有需要的好兄弟自己申请一个吧

在util包的URLUtils.class中将key换成你自己申请的就行

在这里插入图片描述

**

或者可以改用腾云天气:https://wis.qq.com/weather/common?source=pc&weather_type=observe|index|rise|alarm|air|tips|forecast_24h&province=广西省&city=桂林市

免费不限次数,但是有个鸡肋的点,请求数据需要加上省份。
跟着老师做了两个版本,上传的是使用聚合api版本

在老师的版本上加上了定位的功能

源码:https://gitee.com/shidulin/weather_app.git
参考:https://www.bilibili.com/video/BV1QE411i7oQ
百度云:
链接:https://pan.baidu.com/s/1DpFrXvNf888zX_GnIkB-0g
提取码:dda2

创作不易,可否给作者点个赞再走


原文连接:https://blog.csdn.net/qq_44364267/article/details/117426857

相关推荐

Android多版本flavor配置之资源文件和清单文件合并介绍

Android 面试题:说一下 PendingIntent 和 Intent 的区别

Intent 跳转 传递list集合

Google Play 开发者账户被封 如何改代码快速上架

百度APP Android包体积优化实践(二)Dex行号优化

使用ComposeDesktop开发一款桌面端多功能APK工具

一年时间过去了,LiveData真的被Flow代替了吗? LiveData会被废弃吗?

Flutter 绘制探索 | 箭头端点的设计

Android Notes | 开发手记 ing...

Flutter 小技巧之优化使用的 BuildContext

Android原生自定义车牌输入法 附带两种实现思路以及源码 EasyVehicleKeyBoard

Dart(五)—泛型、库使用、async和await关键字

Android启动优化深入解析,全面掌握!

Android技术知识点:如何使用数据绑定来消除findViewById()

ExoPlayer客户端解密m3u8音频\u002F视频

第四届青训营阅读打卡活动来啦,奖品、规则全面升级,快来学习吧

视频直播小窗口(悬浮窗)展示方案

Flutter 2 商城App实战指南(支持Null safety)

LaunchedEffect到底为我们处理了什么问题?

Android View | Canvas详解