阶段一:一个简单的天气预报应用的完整实现过程(一)

“阶段一”是指我第一次系统地学习Android开发。这主要是对我的学习过程作个记录。

在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用。即使功能很简单,但我还是想把它做成一个相对完整的应用。这样的话,像以前想到什么就做什么,显然是不行的,很容易就乱了。所以我就琢磨了一下,弄个什么,让自己的思路变得更加清晰,仅此而已。

经过一些思考和总结之后,我觉得可以是这么一个流程:

第一步:想好这个应用要实现什么功能,并罗列出来,然后就开始写代码,实现这些功能

说明:(1)对于这个模型的具体实现步骤,不必写出来,但要了然于心。在第二步优化的时候,就可以根据这个模型看看那部分可以优化。

(2)在做这一步时,不要太在意UI,只要实现所需的控件和基本样式就可以了。

这一步完成之后,带有核心功能的应用就出来了。

第二步:优化

这里的优化分两部分,“主要”指的是应用本身所要实现的功能和其UI界面,“其它”指的是所有应用都有的,都应该注意的,是共性问题,例如文字、图片、间距等怎样适配各种手机屏幕,设备旋转对页面产生的影响,记录页面状态,用户和系统的操作对应用的生命周期产生的影响等。相信还有更多的地方需要思考,留意。只是我现在只能想到这些。另外,随着深入地学习和不断地练习,应该会有很多地方,在第一步时已经注意到并完善了。

这一步完成之后,应用就相对完整了。

接下来,就以我的情况来做分析:

一、基本模型

而这里,我的概括说明是:

(1)在EditText上输入城市名,单击“确认”按钮后;

(2)调用自定义类的方法,把EditText的内容转为拼音;

(3)将API地址和城市名拼音拼接,传给AsyncTask的自定义子类,在其doInBackground方法中实现“发送请求、获取网络数据、解析并存储所需数据”的功能,在其onPostExecute方法中实现“显示数据”的功能;

(4)用Handler设置每过5分钟,就执行一次(3)的操作,来达到“自动刷新”的效果;

(5)单击“刷新”按钮,也是重复(3)的操作,来完成“主动刷新”的功能;

这不是详细说明,而是概括的,因为我也尝试过这样写,但真的写不下去,没写多少我就感到要吐了,真的很繁琐,所以这里只是简单地做个例子。

另外,由于这个接口是免费的,所以国内的城市只能换成拼音发送,国外的城市没访问过。还有关于自动定位的,我原打算是自动获取手机当前的经、纬度,然后再传到API获取其地址。而百度地图也有这个免费的API服务,但我在申请密钥时遇到点麻烦,没弄成,而且关于定位这块还是比较不理解。所以这部分先搁置。

有了清晰的思路和规划之后,就可以开始写代码了:

这里我没有贴出完整的代码,只把核心部分贴出来。

后台处理网络请求和解析数据

输入城市名、启动自动刷新和主动刷新功能

结果是这样子的:

时间: 2024-10-21 03:16:53

阶段一:一个简单的天气预报应用的完整实现过程(一)的相关文章

基于Servlet、JSP、JDBC、MySQL的一个简单的用户注册模块(附完整源码)

最近看老罗视频,做了一个简单的用户注册系统.用户通过网页(JSP)输入用户名.真名和密码,Servlet接收后通过JDBC将信息保存到MySQL中.虽然是个简单的不能再简单的东西,但麻雀虽小,五脏俱全,在此做一归纳和整理.下面先上源码: 一.index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path =

WP8.1开发:简单的天气预报应用

今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意义的,至少数据更详细,而要想要用户喜欢,必须有比小娜更人性化的提醒和精美的UI.UI必须要精美.当然小梦今天分享的UI很简单.大家可以根据自己的想象去处理UI.之所以分享出来,是分享JSON的数据处理.在WP8.1开发XML读取中央气象城市代码文件中,分享了XML文件和JSON数据解析的方法,不过其

Linux内核分析—完成一个简单的时间片轮转多道程序内核代码

---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验要求: mykernel实验指导(操作系统是如何工作的) 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd

【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用

导读 在本篇文章中你将了解到如何使用JBOSS7开发出一个简单的EJB应用以及在这个过程中遇到的问题. 环境 MyEclipse10 JBOSS7 JDK1.8.0 准备 MyEclipse10中配置JBOSS7 了解JBOSS目录结果 首先了解一下JBOSS7的目录结构,和之前的版本不一样 在 JBoss 7 中,文件系统分为两部分: 1. 独立服务器standalone 2. 域服务器domain (这是 JBoss 7 首次引入的) - 用于统一的管理多个实例 bin: 包含启动的脚本,用

nginx 学习五 filter模块简介和实现一个简单的filter模块

1 nginx过滤模块简介 过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处理.它的处理时间在获取回复内容之后, 向用户发送响应之前.它的处理过程分为两个阶段,过滤HTTP回复的头部和主体,在这两个阶段可以分别对头部和主体 进行修改. 2 过滤模块执行顺序 2.1 ngx_http_output_(head, body)_filter_pt 先看一下nginx常用的过滤模块,在ngx_moudles.c中有一下代码: ngx_module_t *ngx_modules

C 封装一个通用链表 和 一个简单字符串开发库

引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是C++写,界面是C#写.那时候刚进去评级我是中级,因为他问我关于系统锁和信号量都答出来.开发一段 时间,写C#也写的很溜.后面招我那个人让我转行就写C++和php,那时候就开始学习C++有关知识. 后面去四川工作了,开发安卓,用eclipse + java语法 + android jdk,开发前端,

自己实现简单的天气预报应用(6)

6.加入Widget小部件 由于小部件的存在,我们可以直接在启动器上查看某些数据,下面通过一个简单布局Widget的实现学习如何与Widget的Provider类通信,和如何用外部传入的数据初始化Widget, 首先,按照编写小部件的标准步骤,定义布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.

一个简单粗暴的前后端分离方案

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后

Ajax学习(二)—— 一个简单的Ajax实例

通过上篇博客认识Ajax之后,我们通过一个简单的实例来消化消化理论知识,一睹Ajax的庐山真面目. 1.实例功能: 当用户输入用户名,文本框失去焦点后,通过异步调用来判断该用户名是否已经存在.若存在,则在上图中红框处显示提示.当用户名可用时,提交按钮变为可用状态. 2.设计Html页面: <span style="font-family:SimSun;font-size:18px;"><strong><span style="font-famil