上一篇:Android 天气APP(十)下拉刷新页面天气数据
前言
如果你看到这里那么你应该看过前面十篇文章了,这是第十一篇,其实写作的原意,并不是我想分这么多章节的,但是不得不分章节,我不能只考虑自己不考虑阅读的人,试问,我这里有一篇20万字的博客,你要不要看一下呢?你可能会望而却步吧,从而失去兴趣,故分章节,但请放心,我不是标题党,也不做无意义的分章节,标题肯定是要对应里面的内容的,现在有些博主写文章花里胡哨的,就靠标题吸引人,里面的内容都在胡扯,没有一点意义,题不对意,别人提问也不回复,这样就是不负责任,对此,我表示强烈的谴责和抗议。
正文
还记得之前注册这个和风天气的API吗?之前是用普通用户(作为白嫖党,如果不多搞一些,就亏了,所以我们要从普通用户升级到开发者,当然还是不要钱的,只不过拿到的数据会多一点,我们要的七天的天气预报就在开发者的版本里面,而且开发者的API访问是比普通用户要多的。当然你们要是有钱可以使用商业版,商业版的数据足够你开发一个商业级别的APP了,只不过商业版很贵就是了,我一个穷人用不起,当然我们也可以合作,你出钱,我出力,美滋滋),现在升级到开发者,点击和风天气登录,进入控制台
点击升级,会让你绑定手机号,输入验证码后下一步就是升级为开发者
作为开发者你就要对自己的APP负责了,所以就需要你的身份证号码和正反面照片了,还是应用的名称及应用的类型,相信你们也知道该怎么填,填完之后点击同意并变更
然后就会进入审核阶段,
审核的结果会发到你注册时的邮箱里面。慢慢等吧(建议你可以先把文章收藏,等你的审核通过之后继续看,有些文章,错过就不在了)。
反正你现在闲着也是闲着,来改UI吧,天气预报列表中的天气状态之前是用文字来描述的,现在改成用图标来描述,那么这个图标哪里来呢?羊毛出在羊身上,薅羊毛就要彻底一些,当然是去和风天气官网去拿图标了。
下载之后解压,你会看到很多图标,但是这些图标的颜色是蓝色的,而我希望是白色,这样才符合我这个APP的UI整体效果,所以还是要自己改一下图标的颜色,这么多图标,这也是个体力活啊,慢慢改吧。
打开你的PhotoShop,然后随便拖一个图标进去,比如这个图标。
颜色叠加
将默认的红色改成白色
然后点击确定,再点一次,回到PS主页面,可以看到就变成白色了
接下来保存图标,点击左上角的文件->存储为
格式保存为png格式,然后就是覆盖它原来的蓝色图标,然后一路保存,最后看到你的文件夹中的图标就变成白色的了。
好了,还有那么多图标呢,你慢慢改,不着急。磨刀不误砍柴工啊。
图标名中带“ n ”的是表示晚上,不带的就是白天的,你也可以改成白色的,并且在APP上增加现在是白天还是晚上的状态判断,也算是进一步优化,这个目前先不做。
Android不允许纯数字命名的图片,你可以把100.png改成icon_100.png。
所有图片都改好之后复制到你项目的mipmap-xhdpi文件夹下。
然后对照这个天气代码表来做判断显示
天气代码对照表
代码 | 中文 | 英文 | 图标 |
100 | 晴 | Sunny/Clear | |
101 | 多云 | Cloudy | |
102 | 少云 | Few Clouds | |
103 | 晴间多云 | Partly Cloudy | |
104 | 阴 | Overcast | |
200 | 有风 | Windy | |
201 | 平静 | Calm | |
202 | 微风 | Light Breeze | |
203 | 和风 | Moderate/Gentle Breeze | |
204 | 清风 | Fresh Breeze | |
205 | 强风/劲风 | Strong Breeze | |
206 | 疾风 | High Wind, Near Gale | |
207 | 大风 | Gale | |
208 | 烈风 | Strong Gale | |
209 | 风暴 | Storm | |
210 | 狂爆风 | Violent Storm | |
211 | 飓风 | Hurricane | |
212 | 龙卷风 | Tornado | |
213 | 热带风暴 | Tropical Storm | |
300 | 阵雨 | Shower Rain | |
301 | 强阵雨 | Heavy Shower Rain | |
302 | 雷阵雨 | Thundershower | |
303 | 强雷阵雨 | Heavy Thunderstorm | |
304 | 雷阵雨伴有冰雹 | Thundershower with hail | |
305 | 小雨 | Light Rain | |
306 | 中雨 | Moderate Rain | |
307 | 大雨 | Heavy Rain | |
308 | 极端降雨 | Extreme Rain | |
309 | 毛毛雨/细雨 | Drizzle Rain | |
310 | 暴雨 | Storm | |
311 | 大暴雨 | Heavy Storm | |
312 | 特大暴雨 | Severe Storm | |
313 | 冻雨 | Freezing Rain | |
314 | 小到中雨 | Light to moderate rain | |
315 | 中到大雨 | Moderate to heavy rain | |
316 | 大到暴雨 | Heavy rain to storm | |
317 | 暴雨到大暴雨 | Storm to heavy storm | |
318 | 大暴雨到特大暴雨 | Heavy to severe storm | |
399 | 雨 | Rain | |
400 | 小雪 | Light Snow | |
401 | 中雪 | Moderate Snow | |
402 | 大雪 | Heavy Snow | |
403 | 暴雪 | Snowstorm | |
404 | 雨夹雪 | Sleet | |
405 | 雨雪天气 | Rain And Snow | |
406 | 阵雨夹雪 | Shower Snow | |
407 | 阵雪 | Snow Flurry | |
408 | 小到中雪 | Light to moderate snow | |
409 | 中到大雪 | Moderate to heavy snow | |
410 | 大到暴雪 | Heavy snow to snowstorm | |
499 | 雪 | Snow | |
500 | 薄雾 | Mist | |
501 | 雾 | Foggy | |
502 | 霾 | Haze | |
503 | 扬沙 | Sand | |
504 | 浮尘 | Dust | |
507 | 沙尘暴 | Duststorm | |
508 | 强沙尘暴 | Sandstorm | |
509 | 浓雾 | Dense fog | |
510 | 强浓雾 | Strong fog | |
511 | 中度霾 | Moderate haze | |
512 | 重度霾 | Heavy haze | |
513 | 严重霾 | Severe haze | |
514 | 大雾 | Heavy fog | |
515 | 特强浓雾 | Extra heavy fog | |
900 | 热 | Hot | |
901 | 冷 | Cold | |
999 | 未知 | Unknown |
七天的天气预报和UI优化
在我修改图标颜色的过程中,发现有好几个天气代码的图标是一模一样的,所以代码中判断显示的时候会有几个状态码对应的图标一样,提前说明,不要见怪。
接下里就是修改天气预报列表的item的布局文件了。
item_weather_forecast_list.xml
改动并不大,加了一个ImageView而已,然后在创建工具类
在utils包下创建一个WeatherUtil类
代码如下:
WeatherForecastAdapter.java中做判断显示图标,代码如下:
因为写作过程中,还有其他事情,所以并不是一蹴而就的,当我写适配器代码的时候就我的邮箱就已经收到通过审核的短信了,你如果没有收到也不要着急,只要资料没有问题,审核还是蛮快的,关键看审核的人员那个时候有没有帮你审核。现在我成为一个认证开发者了,那么可以直接运行一下。
再切换一个城市
从这个运行的效果图来看,完成了两件事,第一个就是未来七天的天气预报,这个只要你通过了审核,成为开发者,返回的数据自然就变成7天的,第二个就是UI优化,感觉图标显示还是比文字显示更好一些,这个就属于细节优化问题了,因为这个细节,你还是要做很多准备工作的。
逐小时预报和UI优化
访问测试地址,请以自己的Key去访问,返回的结果
在bean包下创建一个HourlyResponse.java,里面的代码如下:
页面渲染的数据从这些返回实体里面取,下一步,创建接口,打开ApiService.java
在里面增加
注意Key用自己的,然后创建订阅,打开WeatherContract.java
订阅方法
接口返回值
接下来就是MainActivity.java
代码如下:
需要在三个地方进行请求,拿到定位之后、下拉的时候、切换城市之后
通过断点查看到了返回的数据,这一步你可以跳过,不会有什么影响,往下走
现在数据已经拿到了,接下来就是数据的渲染了,依然使用列表来做显示,这里我们用横向的列表,摆放的位置就放在7天天气预报的上方,这样会比较合理。
接下来在layout下创建一个item_weather_hourly_list.xml文件,
这就是每一个item的显示效果,只不过背景是无色的,这里之所以放黑色背景,是在写布局的时候易于调整。
item_weather_hourly_list.xml代码如下:
然后在WeatherUtil.java中再增加一个方法showTimeInfo
接下来在adapter包下创建一个WeatherHourlyAdapter.java
适配器写完了,接下来修改一下activity_main.xml布局文件
icon_weather_sun.png
上方是一个图标。因为是白色所以你看到不到而已
我改动之前的这个更新时间的布局,下方放了一个分割线和一个列表,列表用于显示逐小时天气、原来的天气预报列表增加了内边距
修改地方的代码如下:
接下来就是在MainActivity.java中渲染数据了。
初始列表和适配器
改动的地方大概就这么多了,然后可以运行一下了。运行效果图如下
这一篇文章就结束了,但是这个APP并没有结束,后续我有什么想法还会一直在里面加,当然各位有什么好的建议也可以评论或者私信我,写完才发现这篇文章也有34000多字,说短也不短了,如果你看了里面的内容不明白的话,就请从第一篇看起,你就一定知道是怎么回事了。
源码地址:GoodWeather 欢迎 Star 和 Fork
下一篇:Android 天气APP(十二)空气质量、UI优化调整