当前位置:网站首页 > 编程语言 > 正文

天气预报源代码(简单的天气预报app的代码)



一个简单的天气APP

  • 效果演示视频
  • 简述
  • 天气JSON数据
  • 实况天气
  • 逐24小时天气预报
  • 未来七天天气预报
  • 天气详情页
  • 效果图
  • 获取JSON数据
  • URL请求
  • 实况天气URL
  • 逐24小时天气预报URL
  • 未来七天天气预报URL
  • 解析JSON数据
  • 解析实况天气数据
  • 解析逐小时天气预报
  • 解析未来七天天气预报
  • 初始化天气详情页
  • 获取当前位置
  • 获取经纬度
  • 经纬度转为地理信息
  • 页面初始化
  • ViewPager子页面编辑
  • 指示器
  • 天气编辑页
  • 效果图
  • 简版天气数据
  • 获取数据并初始化
  • 子项删除
  • 搜索
  • 效果图
  • 更改SearchView背景和字体样式
  • 搜索初始化
  • 搜索字符监听
  • 下载地址

EasyWeather演示效果视频

此天气数据源采用心知天气API(试用版),免费版获取数据有限,只能获取普通的温度、湿度等,例如压力、云量、可见度等均获取不到,试用版相当于正式版,可以获取大部分数据,试用日期是14天。

首页不同城市天气页面之间的滑动采用的是,编辑界面的搜索栏采用的是,其中城市数据源是统计到一个xml文件中;通过点击搜索匹配项,插入至SQLite数据库中,然后刷新当前天气子项,然后通过通知首页更新views页面。处于编辑状态时,删除子项,同样使用通知首页更新;更新主要是页面数量更新和下方指示器更新。

实况天气

逐24小时天气预报

未来七天天气预报

包括实况天气、逐24小时天气预、未来七天天气预报三部分数据

效果图

Android studio天气预报app源码 安卓简单天气预报app源码_android studio

获取JSON数据

首先通过OKHttp使用get方式获取数据,不同的天气数据,传入不同的url,所以把请求作为公共方式,然后通过写一个回调接口,将数据源回调至外部。

URL请求

实况天气URL

具体方法参考官网 官网所展示的请求参数并不是需要所有都添加,例如语言都有默认想,一般不需要提交,在官网也有标注,此处传入key(心知天气API密钥)和城市(你所想获取天气预报的城市,可以是汉字)

逐24小时天气预报URL

具体参考官网 前两项参数与实况天气一致,第三个参数是你需要获取多少小时的天气预报数据,以当前时间为第一个小时;例如:你传入5个小时,你当时系统时间是9点,那么返回的第一个数据就是9点,第二个为10…第5个为13点;以此类推

未来七天天气预报URL

具体参考官网 第三个参数与逐小时天气预报的小时一致,以当前日期为第一天;请求天数好像最大为15天

解析JSON数据

解析实况天气数据

JSON数据格式在上文有提及,返回的数据较多,我们只需要关于天气的即可,地点可以不解析;此处将数据源解析成具体实体类,依旧通过回调接口,暴露给外部。

解析逐小时天气预报

步骤与实况天气雷同,区别在于逐小时天气预报返回的数组,所以回调接口,返回也是list数据

解析未来七天天气预报

同样返回的是数组数据,完成数据解析并回调;值得注意的是,如果有存在重复的城市名称,返回的数据也是多份,例如请求的城市名称并不精准,本来想请求张家界的天气数据,但是只输入张家二字,系统后台会返回张家界和张家口的数据,所以我们默认取第一个数据源

初始化天气详情页

获取当前位置

为了减轻app负重,并未采用高德、百度等API进行位置定位,采用原始的定位方式,使用网络方式进行定位

获取经纬度

获取位置信息需要动态申请位置权限

经纬度转为地理信息

将经纬度转为具体地理信息,由于心知天气API需要提供城市级城市数据,所以我们只需要xx市数据即可

页面初始化

单个页面初始化,通过遍历,将所有页面进行填充;每个界面背景图片会根据心知天气返回天气状态发生变化,由于素材有限,只适配了较为常见的几种状态,例如:晴、多云、阴、雨、雪、雷

ViewPager子页面编辑

view添加和删除都是通过EventBus进行监听,然后操作adapter完成操作

页面添加

此功能就是重复调用单个views初始化方法,然后使用adapter进行notify和更新指示器即可

页面删除

通过从天气编辑页面点击的城市子项,传过来的城市数据,然后与views存在的数据进行匹配,然后删除对应的界面

指示器

指示器是通过两个xml定义不同的圆,然后通过selector文件进行选择,使用一个控件作为指示器控件,通过传入的指示器个数,添加多个view,然后设置背景为selector文件,通过设置其属性,改变圆形状态

此页面功能包括searchView和listView匹配搜索、城市天津、城市天气简单版子项显示、天气子项编辑等功能

效果图

Android studio天气预报app源码 安卓简单天气预报app源码_android studio_02

Android studio天气预报app源码 安卓简单天气预报app源码_android_03

简版天气数据

此数据与天气详情页数据请求一致,只是数据更为简单,值得注意的是,从天气详情页传过来的城市,并不显示其具体名称,而是以代替,因为是子线程加载,获取的数据排列方式不一,所以在展示数据时,需要将本地数据一列移到到最前方。

获取数据并初始化
子项删除

通过通知天气详情页进行更新

搜索

效果图

Android studio天气预报app源码 安卓简单天气预报app源码_android studio_04

更改SearchView背景和字体样式

定义一个xml文件,然后在SearchView的background属性引用即可改变其背景

更改SearchView字体颜色,需要获取其内置的一个控件id,然后通过EditText进行改变即可,TextView也可以

搜索初始化

重点在于xml城市列表文件,然后采用默认的adapter作为适配

搜索字符监听

一开始那个提示黑框就比较呆,所以可以通过后面语句进行隐藏,因为搜索列表是覆盖简版天气子项的,所以当搜索列表显示时,天气简版隐藏,反之,亦然;

Gitte下载链接

到此这篇天气预报源代码(简单的天气预报app的代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 反编译exe源代码(怎样反编译一个exe文件)2025-10-09 09:27:05
  • 快捷键删程序(快捷键删程序怎么删)2025-10-09 09:27:05
  • linux安装yum命令步骤(linux中yum怎么安装)2025-10-09 09:27:05
  • e71409故障码(e740故障代码)2025-10-09 09:27:05
  • u盘 启动盘制作(u盘启动盘制作)2025-10-09 09:27:05
  • 圈一圈英语怎么读(圈一圈的英语是什么)2025-10-09 09:27:05
  • 接口403错误(接口报错401)2025-10-09 09:27:05
  • lda主题模型(LDA主题模型书籍)2025-10-09 09:27:05
  • C7000纸盒不显示(7470d纸盒无纸)2025-10-09 09:27:05
  • 断开连接是什么意思(断开连接是什么意思呀)2025-10-09 09:27:05
  • 全屏图片