先看下app效果图:




App介绍:首次启动应用时列表显示全国34个省份及直辖市包括港澳台,如果选择省份进入所在省份下的市列表,如果再选择市项进入该市下所有的区或县(包括该市)列表,如果再选择该列表下的项就显示该区域的天气预报界面。图5从左滑出侧边栏可以选择其他城市。如果是非首次启动,则显示上次选择的城市天气预报界面(比如退出时显示广州的天气预报界面即图4,再次进入时仍显示该界面)。
具体app功能实现:
1.获取全国城市列表(图1到图3)
想罗列出中国所有的省份,只需要访问地址:http://guolin.tech/api/china,服务器会返回一段JSON格式的数据,包含中国所有省份名称以及省份id。如果想知道某个省份内有哪些城市,比如江苏的id是16,访问地址:http://guolin.tech/api/china/16。只需要把省份id添加到url地址的最后面即可。比如苏州的id是116,那么想知道苏州下有哪些县和区的时候,访问地址:http://guolin.tech/api/china/16/116。如此类推。
本app使用DataSupport这款开源的数据库框架进行城市查询,需要在app下的build.gradle导入:
在清单文件中的application节点中加入:
此外还需要在assets目录下新建litepal.xml,构建名为weather_db的数据库,分别构建Province、City、County三张表。
对于省份、城市、区或县进行数据库查询,则这些实体类需要继承自DataSupport:
访问服务器,所以需要在清单文件加入访问网络的权限:
主程序布局仅由一个fragment组成,该fragment的布局由一个自定义的标题栏和一个listview组成:
activity_main.xml
fragment的布局choose_area.xml
城市列表显示界面ChooseAreaFragment,本文使用okhttp进行网络请求,所以需在build.gradle添加:

该fragment的代码及分析如下:
该fragment涉及的工具类如下:
2.获取城市天气预报

本文使用和风天气平台提供的天气数据来源,关于如何使用该平台获得城市天气预报情况,可以参考Android 获取实时天气数据,在这就不多加赘述。
每次启动应用时,先去检查SharedPreference中保存键为”weather”的值(即和风天气需要获取天气情况的城市代码)是否为空,如为空,显示城市列表fragment即ChooseAreFragment,如不为空,则将该值通过Intent传递给城市天气预报界面WeatherActivity,并启动该Activity。
该WeatherActivity界面背景使用必应服务器提供的图片,使用Glide三方框架加载缓存的背景图片,代码及分析如下:
app的build.gradle中需要导入:
以上就是整个app的具体介绍,具体思路大概是先通过DataSupport获取远程服务器上的城市列表,然后通过和风天气平台获取选中的城市天气预报及空气质量指数等。
最后附上WeatherActivity的相关布局文件代码:
activity_weather:
title.xml:
now.xml:
forecast.xml:
forecast_item.xml:
aqi.xml:
suggestion.xml:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/155664.html