京东万象--全国天气软件实现

简介: 京东万象--全国天气软件实现

使用京东万象接口,实现中国天气app。

先上截图:

网络异常,图片无法展示
|

软件主要实现当日天气查询,天气地区查询,未来天气查询:

软件架构,使用databinding+livedata+rxjava+mvp实现。

难点:

关于接口请求,那就没啥好说的了。

(1)天气动画的绘制

(2)天气折线图自定义view绘制

啥也不说,上图,下图为各种天气动画的情况(动画效果是为了演示效果手动调整代码,请忽略信息不对的问题):


网络异常,图片无法展示
|

天气的不同动画

对于天气,目前有以下几种情况:晴天,雪,大雾,大风,多云,下雨

动画实现,surfaceview实现,surfaceview可以在子thread里面进行绘制,对于动画,建议使用该view实现。

(1)晴天:

原理:三个正方形加一个圆形,正方形按照角度旋转,可以绘制出上图中的效果。代码片段如下,主要注意旋转角度即可。

网络异常,图片无法展示
|

太阳动画

(2)多云:

原理,使用五个圆形,加上画布剪裁,即可实现。核心代码如下,注意剪裁的范围即可。

网络异常,图片无法展示
|

多云动画

(3)下雨:

雨滴,可以看做是多个高度不断变动的小矩形,即可。是不是很简单,核心代码如下:

网络异常,图片无法展示
|

下雨动画

(4)下雪,大风,大雾

这里直接采用drawbitmap方法进行绘制。核心代码如下。


网络异常,图片无法展示
|

绘制bitmap动画

简单明了,废话不多说。以上就是动画的绘制逻辑。

注意,如果使用了surfaceview不断绘制动画,在activity进行跳转的时候,记得把动画暂停,不然会导致卡顿现象的发生。暂停动画方法千百种,这里就不做过多描述。


对于天气折线图,实现也不难,主要绘制原理:

绘制温度的点,再通过点与点之间的位置进行连线,即可实现。

记得:

先有点,再有线。

先有点,再有线。

先有点,再有线。

效果如下:


网络异常,图片无法展示
|

其他,就没什么难点了。至此,全部实现完毕。

that's all--------------------------------------------------------------------------------------------------------------------------

目录
相关文章
|
移动开发 测试技术 开发工具
【钉钉免登录】(详解)钉钉接口,H5微应用,钉钉免登录及获取当前用户信息
【钉钉免登录】(详解)钉钉接口,H5微应用,钉钉免登录及获取当前用户信息
2256 1
【钉钉免登录】(详解)钉钉接口,H5微应用,钉钉免登录及获取当前用户信息
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
JavaScript
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
2993 1
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
|
XML NoSQL Java
Redis - 一篇走心的 RedisUtil 工具类
Redis - 一篇走心的 RedisUtil 工具类
4005 0
Redis - 一篇走心的 RedisUtil 工具类
|
8月前
|
JSON JavaScript 前端开发
shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)
在使用Openlayers、leaflet、mapbox等地图控件的时候,GeoJSON几乎是不可避免打交道的数据类型,如果您想要从事gis行业相关的开发工作,本篇文章应该能为您带来一些帮助。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
小程序 JavaScript 前端开发
微信小程序开发必备前置知识:基本代码构成与语法
【8月更文挑战第8天】微信小程序的基本代码构成与语法
476 0
微信小程序开发必备前置知识:基本代码构成与语法
|
网络协议 物联网 测试技术
App Inventor 2 MQTT拓展入门(保姆级教程)
本文演示的是App和一个测试客户端进行消息交互的案例,实际应用中,我们的测试客户端可以看着是任意的、支持MQTT协议的硬件,通过订阅及发布消息,联网硬件与我们的App进行双向数据通信,以实现万物互联的智能控制效果。
890 2
|
12月前
|
API
天气预报1天-中国气象局-地址查询版免费API接口教程
此接口提供中国气象局官方的当日天气信息,支持POST和GET请求,需提供用户ID、KEY、省份及具体地点。返回数据包括状态码、消息、天气详情等。示例中使用的ID与KEY为公共测试用,建议使用个人ID与KEY以享受更高调用频次。
2513 9
|
存储 弹性计算 块存储
开发者如何使用块存储EBS
【10月更文挑战第9天】开发者如何使用块存储EBS
443 4