Android 实战制作简易天气预报

天气预报

Android 实战制作简易天气预报_第1张图片
临近期末,Android需要交作业所以做了一个比较简单的app,小白勿喷

涉及知识点

容器类布局RelativeLayout,LinearLayout

基础控件的绘制和使用

TextView:显示文本内容
ImageView;设置图片
Button:按钮
EditText:接受客户输入内容

复杂控件的绘制和使用

lIstView:显示列表数据控件,使用设配器填充内部内容
	BaseAdapter的使用
	通知适配器,数据更新方式
	设置点击监听
GridView:显示网格数据控件:与listview相同
ViewPager:可左右滑动,包含多个view或者fragment的控件
	FragmentStateAdapter使用
	需要网页发生变化时,提示适配器更新
	设置滑动图标指示器
	设置滑动监听
GardView:androidX包含的控件,用于LIst View的每一个item的容器类布局,可制作卡片式效果,包含自带属性,需要导入appNs域名

Activity

创建、绑定布局
生命周期
跳转与传值

Fragment

加载进入viewPager的方式
Activity向Fragment的传值方式

数据储存

数据库操作
SQLiteOpenHelper的创建和使用
SQLiteDatebase函数的使用
创建表、增删改查
共享参数存储
数据获取、存储
切换页面壁纸

第三方框架

XUtils:封装完善的多功能框架,本项目用于网络获取数据功能
Gson:解析json数据的框架

界面展示


Android 实战制作简易天气预报_第2张图片
Android 实战制作简易天气预报_第3张图片
Android 实战制作简易天气预报_第4张图片
Android 实战制作简易天气预报_第5张图片

软件功能前期分析

1.根据天气预报接口,获取网络数据
2.展示选择城市的天气情况,温度,风向,各种数据以及未来基本天气情况
3.将网络获取的城市天气信息保存到数据库中,便于无网络进行数据请求
4.对数据库中的城市天气进行增删改查
5.根据LocationManager api获取当前位置位置经纬度,再通过全球逆地理编码api获取网络数据,进而解析出当前所在位置信息

难点分析

1.动态添加VIewPager对应小圆点指示器
切换界面时,刷新数据库数据
3.返回主界面时,改变ViewPager数据源页面的功能
4.改变首页背景图片
5.获取当前位置并显示在主页面

页面切换逻辑

1.应用启动时,进入主界面,拓攻获取数据库的城市信息,获取网络数据,展示在Fragment中,在View Pager中滑动,点击加号按钮,跳转城市管理页面,点击更多页面,跳转更多按钮,跳转设置页面
2.城市管理页面,展示数据库存储的城市天气最新信息列表,点击返回按钮,返回上一级页面,点击加号按钮,跳转搜索更多城市界面,点击编辑按钮,跳转删除城市界面
3.搜索更多界面城市界面,网络展示热门城市名称,点击期中每一项,可跳转主界面,在主界面显示增加的城市信息,也可输入城市名称,点击搜索按钮,判断是否存在该城市信息,存在跳转主页面展示信息,否则提示用户重新输入
4.删除城市页面,展示数据库存储的城市名称列表,点击每一项的垃圾同按钮,可从数据库中删除记录,点击错号,弹出提示器,点击对号,从数据库删除操作的记录,并返回上一级城市管理界面,并且上一级页面也是显示删除后的数据信息,在返回上一级主界面,显示依然为操作后剩余的城市信息
更多设置界面,包含功能,更改背景颜色,清楚缓存数据,获取版本号,分享软件等操作

所使用的天气预报接口为https://www.juhe.cn/docs/index/otherid/1

免费一天一百次,建议自己申请一个,个人经验有时候调试一百次根本不够用,请求不到数据时会闪退,可以在数据库里存入上一次的数据,但是次数用完了就不能实时更新;

或者可以改用腾云天气:https://wis.qq.com/weather/common?source=pc&weather_type=observe|index|rise|alarm|air|tips|forecast_24h&province=广西省&city=桂林市

免费不限次数,但是有个鸡肋的点,请求数据需要加上省份。
跟着老师做了两个版本,上传的是使用聚合api版本

在老师的版本上加上了定位的功能

源码:https://gitee.com/shidulin/weather_app.git
参考:https://www.bilibili.com/video/BV1QE411i7oQ

你可能感兴趣的:(Android,java,android,studio,android)