Android酷欧天气实训报告书,Android第一行代码 酷欧天气总结

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

距离上次写博客大概已经过了半年了,期间一直在在学习《第一行代码》,

前几天用了一周多了时间把最后的酷欧天气项目完成了,总体来说还是顺利的,

中间遇到了一些困难,这里就在这里总结一下,希望对大家的学习有所帮助,代码在我的GitHub上酷欧天气,如果有需要大家可以下载参考,有什么错误也请大家能够指出来,我们一起学习。

1. 目录结构

db:用于存放数据库模型相关的代码

gson:用于存放GSON模型相关的代码

service:用于存放服务相关的代码

util:用于存放工具相关的代码

2. 创建数据库和表

在创建数据库和表之前,在app/build.gradle中声明项目所需的各种依赖。OkHtttp用于进行网络请求,GSON用于解析JSON数据,Glide用于加载和展示图片。 这部分的内容比较简单,大家只需要按照书的内容一步一步来就可以了,首先创建Provincce,City,County这3个类并继承DataSupport,然后新建assets目录,创建 litepal.xml资源文件,用于创建数据库名称、数据库版本、表名、数据库存放的位置,最后再配置LitePalApplication。

3. 遍历全国省市县数据

全国省市县的数据都需要从服务器端获取,因此首先在util包下创建一个HttpUtil类public class HttpUtil {

public static void sendOkHttpRequest(String address,okhttp3.Callback callback){

OkHttpClient client =new OkHttpClient();

Request request = new Request.Builder().url(address).build();

client.newCall(request).enqueue(callback);

}

}

这样我们只需要传入请求地址,并注册一个回调来处理服务器响应就可以了。

由于服务器返回的都是JSON数据,创建Utility用于解析数据,注意调用save()方法对数据进行保存,我第一次就是在这里栽了跟头,所以大家写代码的时候还是要细心一点。这部并没有什么难点,只需要照书上的代码就可以了。另外因为向服务器发起请求需要联网,所以必须在AndroidManifest.xml中进行网络的权限声明。

4. 显示天气信息

这部分大概是最难的地方,当我按照书上代码解析数据时,总是闪退,后来通过搜索发现书上用的api已经过时了,所以解析不出来数据导致报错,于是我查找了官方文档,找到了相应的api,因为解析的数据有所不同,所以必须重新定义GSON实体类用于解析,相对与书本上的api,官方最新的实况天气的api相对简单,并没有预报和建议,于是我便添加了空气质量实况的api,定义了GSON实体类并解析数据,解析过程和书上的weather类似,大家可以参考我的代码。

另外api中请求URL需要传入key值,这里的key是我们在注册完和风天气后在应用管理里面添加的key,在添加的时候key的类型要要选择成Web API 否则无法返回数据。

在遍历空气质量实况中的数据时,通过inflater获取了view,然后在获取的组件的时候,我习惯性的直接用 findViewByid() 之后在向组件中添加信息的时候总是报空指针异常,后来经过反复检查才发现问题,获取控件的时候应该调用 view.findViewById(),写代码的时候不能随心所以,不可有一点马虎,否则就将造成打错。

后面获取每日一图就相对容易一点,使用Glide就可以简单的解决。

5. 手动更新天气和切换城市

这里首先运用了下拉刷新,下拉时重新请求服务器,数据解析完毕加载页面后关闭下拉刷新,隐藏进度条,整体的逻辑还是比较清楚的。

切换城市运用了DrawerLayout,DrawerLayout中第一个子控件用于作为主屏幕中的内容,我们把SwipeRefreshLayout添加进去,第二个子控件作为滑动菜单显示的内容,只需要把第二个子控件的位置添加用于便利省市县数据的碎片。之后重写碎片中的代码就可以了。

但是我发现当我手动选择完城市立即下拉刷新的时候,界面中显示的内容会变成刷新之前的城市的数据,通过对代码的观察,我发现下拉刷新调用的 requestWeather(mWeatherId) 中mWeatherId 并没有给他重新赋值,所以他还是原来城市的id,于是我在requestWeather(final String weatherid)方法中加入了 mWeatherId =weatherid; 因为选择县之后也会调用这个方法,这样我们就可以把新的县的id传入到这个全局变量中,从而使id变成选中之后的id。

6. 后台自动更新天气并修改图标和用户名称

这部分内容包括更新天气和每日一图,只需要设置闹钟,重新解析数据并启动服务就可以了。至于修改图标和用户名就更简单不过了,相信大家一点也不会陌生。

当然除了这些内容,还有很多内容可以去扩展,毕竟比起网上一些有关天气的app,我们的应用还是太过于简单。

到这里我的总结也算是完成了,希望对大家有所帮助,也请大家提出宝贵的建议,毕竟我也是第一次写博客,还是个菜鸟很多的地方还是不懂,谢谢大家。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值