项目总结

这个是仿墨迹天气的一个App,这个是我在自学Android的时候写的一个应用App。这个App的实现的功能有:
(1)可以罗列出全国各地的省市县信息
(2)可以查看全国各地的天气具体信息
(3)可以自由的切换城市,去查看别的城市的天气信息
(4)实现了手动更新以及后台自动更新的功能‘
(5)实现了每日一图的功能
下面我将从它的一步步实现来讲诉这个App的开发过程以及用到的一些Android技术。
其中全国省市县信息来自于自己搭建的后台数据库提供的,而天气信息来自于网上免费的和风天气提供的接口
一、首先是数据库的设计,用于存储从服务器上请求下来的全国省市县信息,这里利用的是LitePal数据库。(知识点1,Android中的四种持久化数据操作
LitePal的好处是可以把表定义成类的形式,从而我们就可以利用面向对象的思想对数据进行增删改查。所以这里面定义了三个类,分别是Province,City,County,他们都是继承于DataSupport。然后里面写的都是他们的属性还有get/set方法
二、遍历全国省市县的数据
1、首先是写一个类,这个类里面有一个用于像网络请求的方法,因为这是天气软件,所以用于网络请求制定是必不可少的。这里用到的是OKHttp(知识点2,利用OKHttp进行网络请求
2、因为省市县的数据都是Json格式的。所以再写一个类,用于对Json数据进行解析。这里利用的是JSONObject来解析数据(知识点3。解析JSON数据的两种方法)这里是先利用JSONArray和JSONObject将数据解析出来,组装成实体类对象,然后利用save()方法将数据存储到数据库中。
3、编写遍历全国省市县数据的页面,由于这个页面在后面还会用到,所以就不写在Activity中了。而是写在Fragment中了,这样后面用的时候直接在布局里引用碎片就好了(知识点4,Activity与Fragment区别)这个碎片最主要的就是利用一个ListView来展示省市县的信息。
以下是这个碎片的设计逻辑(这个碎片的类中除了重载的方法外,还有四个分别是查询省方法,查询市方法,查询县方法,以及从服务器查询的方法)
(1)首先在onCreateView中初始化一些控件的实例,然后初始化ListView的适配器
(2)在onActivityCreated中给ListView和backButton设计点击事件
以上就是初始化操作
(3)在onActivtyCreated的最后调用查询省的方法,这个方法的逻辑是首先会从数据库中查找,如果存在的话就直接显示出来。如果不存在的花就调用从服务器查询的方法。
(4)这个从服务器查询的方法首先是调用之前写的请求网络的方法,然后再利用之前写写好的解析json的方法把从服务器获取到的数据解析后存入到数据库中。这个时候数据库中就有省的信息了,就可以利用查询省的方法将省的信息显示到页面上了。同样当通过ListView的点击事件点击到市和县的信息后,也会按照同样的逻辑去获取市和县的数据,方法也是先从数据库中获取,如果数据库中没有,再从服务器中获取。
以上就完成了遍历全国省市县的数据了
三、显示天气信息
之前解析省市县的时候用的是JSONObject的方法,这里解析天气信息我用的是GSON的方法。首先就是定义GSON实体类。我们的天气信息主要包括以下几部分
(1)基础信息
(2)空气质量
(3)现在情况
(4)建议
(5)未来天气
所以也就定义这几个实体类。
然后就在之前解析省市县的类里面添加一个利用GSON来解析天气信息的方法。
1、编写天气信息页面
(1)头布局(时间加地点)
(2)天气布局(天气信息)
(3)未来天气(动态添加)
2、将天气信息展现在页面上(写一个WeatherActivity)
这个WeatherActivty里面主要由三个部分需要说一下
(1)onCreate这里面只要就是一些控件的实例化,然后试着从缓存中获取天气信息,要是有的话就调用之前写的解析天气信息将天气解析,并用后面的展示方法将天气信息进行展示
要是缓存中没有天气信息那就去从服务器中获取。
(2)接着就是这个从服务器中获取天气信息的方法。首先也是调用之前写的请求网络的方法,获取的信息同样使用之前写的解析天气信息进行解析,最后存入到缓存中。
(3)显示天气的方法。就是将获取到的Weather信息以此显示到相应的控件上。
四、获取每日一图
就是在WeatherActivity类中,首先是定义ImageView的控件,然后也是先从缓存中获取图片要是没有就从服务器获取(也是一个方法),服务器获取也是先调用之前网络请求的方法,将连接存入到缓存中,再用Glide加载图片(知识点5,Glide加载图片
五、手动更新与自动更修
手动更新就是添加一个SwipeRefreshLayout的布局,然后设置监听事件,每次下拉刷新就调用之前请求天气的方法。
自动更新就是把更新功能加载一个服务里面(知识点6,服务)更新天气和图片放入缓存
六、将天气页面和省市县连接起来,做一个DrawerLayout滑动,主题是天气页面,附体是显示省市县的页面。
以前是从LIstView中点击地点就会显示WeatherActiivty,现在都在一个页面了,就不用跳转了,秩序刷新新的地点天气就好了。如果是第一次的话就是Activity的话,那么就加载WeatherActivity。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值