一个简单的天气APP
- 效果演示视频
- 简述
- 天气JSON数据
- 实况天气
- 逐24小时天气预报
- 未来七天天气预报
- 天气详情页
- 效果图
- 获取JSON数据
- URL请求
- 实况天气URL
- 逐24小时天气预报URL
- 未来七天天气预报URL
- 解析JSON数据
- 解析实况天气数据
- 解析逐小时天气预报
- 解析未来七天天气预报
- 初始化天气详情页
- 获取当前位置
- 获取经纬度
- 经纬度转为地理信息
- 页面初始化
- ViewPager子页面编辑
- 页面添加
- 页面删除
- 指示器
- 天气编辑页
- 效果图
- 简版天气数据
- 获取数据并初始化
- 子项删除
- 搜索
- 效果图
- 更改SearchView背景和字体样式
- 搜索初始化
- 搜索字符监听
- 下载地址
EasyWeather演示效果视频
此天气数据源采用心知天气API(试用版),免费版获取数据有限,只能获取普通的温度、湿度等,例如压力、云量、可见度等均获取不到,试用版相当于正式版,可以获取大部分数据,试用日期是14天。
首页不同城市天气页面之间的滑动采用的是,编辑界面的搜索栏采用的是,其中城市数据源是统计到一个xml文件中;通过点击搜索匹配项,插入至SQLite数据库中,然后刷新当前天气子项,然后通过通知首页更新views页面。处于编辑状态时,删除子项,同样使用通知首页更新;更新主要是页面数量更新和下方指示器更新。
实况天气
逐24小时天气预报
未来七天天气预报
包括实况天气、逐24小时天气预、未来七天天气预报三部分数据
效果图

获取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匹配搜索、城市天津、城市天气简单版子项显示、天气子项编辑等功能
效果图


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

更改SearchView背景和字体样式
定义一个xml文件,然后在SearchView的background属性引用即可改变其背景
更改SearchView字体颜色,需要获取其内置的一个控件id,然后通过EditText进行改变即可,TextView也可以
搜索初始化
重点在于xml城市列表文件,然后采用默认的adapter作为适配
搜索字符监听
一开始那个提示黑框就比较呆,所以可以通过后面语句进行隐藏,因为搜索列表是覆盖简版天气子项的,所以当搜索列表显示时,天气简版隐藏,反之,亦然;
Gitte下载链接
到此这篇天气预报源代码(简单的天气预报app的代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/40008.html