logo资料库

移动应用开发项目天气情况app.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
海 南 大 学 移动互联网应用开发课程作业 题 学 姓 年 学 专 目: 号: 名: 级: 院: 业: 天气情况 app 20161681310004 单洽 16 计算机与网络空间安全 网络工程 指导教师: 完成日期: 2019 年 12 月 25 日 钟杰卓
一、系统概述 1.1 选题及背景 本课题研究的是基于 Android 平台下的天气软件,目的是使用户能随时随地 的查询天气信息及天气变化情况,让生活更加舒适方便。本文讲述 Android 平台 下天气软件的界面设计以及数据的获取和解析,主要包括界面的实现,控件的使 用,界面的布局和数据处理等内容,结合中国气象网的天气数据,将准确的天气 情况以友好的方式呈现给用户,使用户更加赏心悦目的体验本软件的服务。通过 对界面的布局及控件的应用等相关内容的学习,使我们对 Android 平台下界面开 发工作有一个初步的了解,并且经过这次开发过程,能够基本掌握这些内容。 天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手 机平台下都有各种各样的天气软件。Android 作为现在主流的智能手机之一,自 然也需要这方面的软件。天气关系到人们的日常生活,如告知温暖,方便出行等。 一款简单实用的天气软件会很吸引用户。 基于 Android 平台的天气软件已经有很多,经过分析,用户第一眼往往是一 个软件的外观,一个好看的界面才能让用户以一种爱美之心去尝试,才能进一步 了解一个软件的好坏,所以吸引眼球的界面是争取用户的第一步。因此,界面设 计工作对应用程序来说非常重要,在界面上吸引了用户,才能进一步让用户体验 应用程序中的功能,使用这个软件。 1.2 成员及分工 成员有黎志波和单洽两人,黎志波负责程序功能的初步实现和运行,单洽负责报告的撰 写及程序的补充完善 二、系统需求分析 2.1 功能需求分析 Android 提供的可变化的用户界面(UI)开发模块是基于 XML 文件的。这 些 XML 文件放在工程/res/layout 下面。这个目录可包含所有应用程序所需的代 码部分,比如图片、字符串、xml 文件。当要使用到这些资源时,在代码目录中 打开 R.java 文件即可。在 XML 文件里编辑界面的代码,实现起来不仅方便,使 用时也会更加灵活。 在Android 程序设计中要用到一些基本的Android UI 元素,通过使用Views、 View Groups 和 layouts 可为 Activity 创建功能性的、富有直观力的 UI.通常是使 用 Android SDK 中提供的一些控件,进行布局、扩展和定制这些控件,并使用 ViewGroups 去组合 Views,创建由相互作用的子控件组成的原子的、重复利用的 1
UI 元素。也可以创建自己的 Views,来实现显示数据和与用户交互的新途径;或 使用一些继承自 View Group 的 Layout 管理器来组织 Android UI 中的单个元素 到屏幕上。 在一个 Android 应用中,用户界面由 View 和 View Group 对象构建。View 与 View Group 有很多种类,而它们都是 View 类的子类。View 对象是 Android 平 台中用户界面的基本单元。View 类是 widgets(工具)类的父类,它们提供了诸 如文本输入框和按钮之类的 UI 对象的完整实现。View Group 类是 Layouts(布 局)类的父类,它们提供了诸如流式布局、表格布局以及相对布局之类的布局架 构。 View 对象是一个数据体,它的属性存储了用于屏幕上一块矩形区域的布局 参数及内容。并负责它所辖的这个矩形区域之中所有测量、布局、焦点转换、卷 动以及按键/触摸手势的处理。作为一个用户界面对象,View 同时也担任着用户 交互关键点以及交互事件接受者的角色。天气实时预报系统程序功能比较单一, 其 UI 也相对比较简单,只要有一个显示所有中国城市信息的列表,一个显示城 市图片的 Imageview 即可。为了建立 Android 平台的用户界面,首先要在 Package Explorer 窗口中展开 Layout 后新建 xml 文件,用来对窗口界面进行布局,主要 有 系 统 运 行 的 主 配 置 文 件 activity_main.xml , listview.xml 和 weatherfragment.xml。 Layout 是一类特殊的 ViewGroup 控件,它们本身没有任何可显示内容,存 在 的 惟 一 原 因 就 是 其 中 的 内 部 结 构 , 能 够 更 好 地 摆 放 它 的 子 控 件 。 比 如 Linearlayout,可将子控件按水平或垂直方向按顺序排列下去;Tablelayout,可以将 子控件按照表格的形式,一枚枚放置好;Relativelayout 更灵活,可以设定各个 控件之间的对齐和排列关系,适合定制复杂的界面。有了 Layout 的存在,控件 和控件之间不再是割裂地存在,而是更有机地结合在一起,设定起来也更为方便。 在 activity_main.xml 文件中主要是添加一些界面的布局设置。 2.2 性能需求及运行环境分析 Windows10 操作系统和 Android studio 运行环境 根据应用程序的功能需要,对用户界面做如下分析: 实时天气界面:显示城市当前的实时天气状况,包括城市名称、城市名片、 天气情况、温度高低、星期等信息。界面左边有一列城市列表,显示中国各个城 市名称,当用户想知道哪个城市的天气情况时,点击这个城市名就可以获取天气 状况,考虑到使软件占用尽量小的内存,软件去掉了不必要的花哨,显示城市名 称,城市名片,温度和天气情况,同时对未来 6 天的天气情况简要描述,简要显 示星期、天气描述、温度高低等数据,使用户一目了然,使人们及时了解天气变 2
化,对日常生活出行、穿衣做好准备。 三、系统总体介绍 3.1 系统功能结构 3.2 系统操作流图 3
四、系统数据结构(数据访问) 基于 Android 操作系统的天气实况预报系统设计的核心是通过调用通信协 议 SOAP(Simple Object AccessProtocol)的接口,从 Web Service 提供商中提取 天气预报的数据信息,为客户端服务。其基本功能是当用户运行天气预报系统程 序时,在手机屏幕上显示出中国的城市名称,用户单击任意一个城市名,可获得 该城市的天气实时预报信息。为此,需要解决的问题是手机终端从 Web 服务器 获取了所有类型的数据之后,将这些数据进一步交给 Android 手机终端 View 组 件,在手机界面上显示给用户。 4.1 天气信息数据的获取 在开发中我们经常提到"接口"这个词,什么是接口呢?简单的说,接口其实 就是一个 http 地址。一个标准的网络应用肯定需要两个部分,一部分是咱们正在 学习的 android 开发,还有另一部分是服务器开发。 大多数 android 程序都是基于网络的,比如基本上大家都在使用的 QQ 手机 客户端。那么假设我们现在要开发一个类似 QQ 的通信客户端。第一步,需要开 发一个登录界面来验证用户登录。很显然的,为了验证登录,我们需要和服务器 进行通信,把用户输入的用户名和密码传递给服务器,然后服务器来判断这组用 户名密码数据是否正确,并返回给客户端,告诉我们用户登录是否成功。 一般接口由三部分组成:接口地址+接口名称+接口参数。比如下面这个是 中 国 气 象 网 提 供 的 天 气 信 息 查 询 接 口 : http://www.weather.com.cn/data/cityinfo/101300501.html,该接口提供的数据是实 时天气情况,代码实现接口获取数据如下: // 请求接口 private void callHTTP(final String cityCode) { // 创建一个runnable Runnable runnable = new Runnable() { @Override public void run() { // step1 :创建HttpGet, 就是创建我们要访问的接口地 址 HttpGet getMethod = new HttpGet( "http://m.weather.com.cn/data/"+cityCode+".html"); // step2 :HttpClient, 我们要通过它来将step1创建出 来的地址发送给服务器 HttpClient httpClient = new DefaultHttpClient(); try { 4
url发送给了服务器, 中了 // step3: 通过httpClient.execute()方法,我们把 // 而服务器返回的信息就会被保存在HttpResponse httpClient.execute(getMethod); // 发起GET请求 HttpResponse response = // 用 EntityUtils.toString 把 HttpResponse 转 换 成string result EntityUtils.toString(response.getEntity(), String "utf-8"); = // 将返回的json字符串解析并显示出来 try { paresJson(result); } catch (JSONException e) { e.printStackTrace(); Log.v("TAG", "解析失败 "); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }; // 开启线程执行runnable new Thread(runnable).start(); } 4.2 在 UI 上显示天气信息 当获得天气数据之后,就可以把它绑定到 activity_main.xml 定义的 ListView 组件上,在 WeatherFragment.java 中的代码段为: public class WeatherFragment extends Fragment { Weather weather; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub 5
super.onCreate(savedInstanceState); weather (Weather)getArguments().getSerializable("weather"); } = @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.weatherfragment, null); } } TextView dayTextView = (TextView) view .findViewById(R.id.time); TextView tempTextView = (TextView) view .findViewById(R.id.yubaoTemp); TextView weatherTextView = (TextView) view .findViewById(R.id.yubaoWeather); dayTextView.setText(weather.day); tempTextView.setText(weather.temp); weatherTextView.setText(weather.weather); return view; 6
五、系统的设计与实现 为了给用户清晰,直观的体验,界面设计要做到简明,友好,因为考虑到各个城 市的不同特点,所以给每个城市添加一张城市名片的图片,能使用户感觉更加友 好,界面左边是城市列表,用户可以选择具体城市查看天气信息。考虑到软件的 简洁明确性,只设定一个界面用来显示城市和天气信息 图 1 软件编写完成,对其进行测试,将手机天气预报系统在手机环境下测试的方 案,以下是对系统进行测试,在手机中找到系统对应图标点开它 等待页面完整展开然后单击设置点开城市管理添加查询的城市名称,稍再返 回主界面便会显示出该城市的天气实况信息。手机端测试结果如图 2 所示: 7
分享到:
收藏