收藏 分享(赏)

计算机科学与技术专业毕业论文--基于Android平台的天气软件开发设计.doc

上传人:微传9988 文档编号:2525183 上传时间:2018-09-20 格式:DOC 页数:40 大小:84.50KB
下载 相关 举报
计算机科学与技术专业毕业论文--基于Android平台的天气软件开发设计.doc_第1页
第1页 / 共40页
计算机科学与技术专业毕业论文--基于Android平台的天气软件开发设计.doc_第2页
第2页 / 共40页
计算机科学与技术专业毕业论文--基于Android平台的天气软件开发设计.doc_第3页
第3页 / 共40页
计算机科学与技术专业毕业论文--基于Android平台的天气软件开发设计.doc_第4页
第4页 / 共40页
计算机科学与技术专业毕业论文--基于Android平台的天气软件开发设计.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、计算机科学与技术专业毕业论文-基于 Android 平台的天气软件开发设计摘 要Android 作为当前最流行的操作平台,本课题研究的是基于 Android 平台下的天气软件,目的是帮助用户随时随地查询天气信息及天气变化情况,让生活更加舒适方便。本 Android 平台下天气软件的界面设计及异常处理部分,主要包括界面的实现、控件的使用、界面的布局和异常的处理等关键字 Android/界面/控件/天气软件AbstractWith the development of science and technology, the mobile terminal gradually into the pe

2、oples attention, related to more widely, and play an increasingly important role in peoples daily lives. Therefore, the development of critical applications has become an important factor in the popularity of the mobile terminal, the design and development of practical, convenient application is of

3、great significance and good market prospects. Android as the most popular operating platform, naturally, there are a lot of demand for application services.The study of this topic is the weather software, based on the Android platform is designed to help the user to query weather information and wea

4、ther changes anytime, anywhere, to make life more comfortable and convenient. This paper describes the software interface design of the Android platform under the weather and exception handling part, including the contents of the interface implementation, the use of controls, the layout of the inter

5、face, and exception handling, combined with weather data of the China Meteorological Association, will be accurate weather conditions presented to the user-friendly way, allows the user to experience more enjoyable the service of this software.KEY WORDS Android,interface,control,weather software目 录中

6、文摘要 i英文摘要 ii目 录 iii1 绪论 11.1 研究内容 11.2 研究目的和意义 11.3 研究前景 12 Android 开发环境及平台搭建 32.1 Android 开发环境介绍 32.2 Android 开发平台搭建 33 项目分析 53.1 用户界面 53.2 异常分析 53.3 相关技术介绍 6Activity 6Intent 6Service 7Layout 布局 8控件介绍 84 界面设计及实现 114.1 加载界面 114.2 实时天气界面 144.3 未来天气界面 214.4 选择城市界面 274.5 版权及 Logo 设计 305 异常处理 315.1 联网异常

7、 315.2 解析异常 316 界面测试 33总结 38致 谢 39参考文献 401 绪论1.1 研究内容Android 平台下天气软件的界面及异常处理部分内容,详细介绍了加载界面、实时天气界面、未来天气界面和搜索界 Android 平台下界面开发工作有一个初步的了解,并且经过这次开发过程,能够基本掌握 2564 个县级以上城市的天气信息,并且把数据显示在一个界面1.2 研究目的和意义Android 作为现在基于 Android 平台的天气软件已经有很多,经过分析,用户第一眼往往是一个软件的外观,一个好看的界面才能让用户以一种爱美之1.3 研究前景Android 在中国的前景十分广阔,首先是有

8、成熟的消费者,在国内,Android 社区十分红火,这些社区为 Android 在中国的普及做了很 Android 阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同Android 系统的产品,我们可以预见 Android 将会被广泛应用在国产智能上网设备上 Android 系统的应用范围。另一方面,由于国内政策的限制,导致Android 的部分功能(如 Android market)在国内无 VPN 服务来访问。Android 的主要竞争对手是苹果公司的 IOS 以及 RIM 的 Blackberry OS。2011 年第一季度,Android 在全球的市场份额首次超过塞班系

9、统 2012 年 2月数据,Android 占据全球智能手机操作系统市场 52.5%的份额,中国市场占有率为 68.4%,在美国手机市场 47.3%。到二月下旬正式宣布,Android 设备每天激活量达到 85 万台,通过 Google 服务器激活的 Android 设备用户 3 亿台,距离 2012 年 1 月的数量,在短短 1 个月时间内全球共卖出 5000 万台安卓设备,平均每秒钟就卖出 15 台安卓设备。Google 官方数据显示,Android 电子市场(Android Market)上的应用程序数量已经突破 45 万个,一年内增加 30 万个。相信在不久的 Android 系统的手

10、机。Android 是以 Linux 为核心的手机操作平台,作为一款开放式的操作系统,随着 AndroidAndroid 应用程序,而不再是以前只能使用 Java 开发Android 应用程序的单一2 Android 开发环境及平台搭建2.1 Android 开发环境介绍Android 平台使用 Java 编程语言来开发应用程序,而 Android 提供了对Java 的核心支持。考虑到 Java 虚拟机的执行效率和占用资源情况 Google 重新设计了 Java 的编译器,命名为 Dalvik。Dalvik 是经过优化的 Java 编译器,允许在有限的内存中同时运行多个虚拟机的实 Dalvik

11、 应用作为一个独立的 Linux进程执行,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。Eclipse 环境中进行,由于进行的是 Android 应用程序的开发,需要在Eclipse 安装 ADT 插件,即 Android 开发工具,这样 Eclipse 就可以和 Android SDK 建立连接,在 Eclipse 中启动 Android 模拟器、调试程序等工作。Android 平台的搭建需要 Android SDK、Java SDK、Eclipse 和 ADT 四个软件。2.2 Android 开发平台搭建Android 应用程序的开发前,要先搭建 Android 平台,然后才能在

12、开发环境中进行编程。根据官方指导,对 Android 平台的搭建首先,在官方网址上下载 JDK6.0 并安装,网址是SDK 进行安装,官方网址为 Manager 进行安装,选择需要的 Android 版本,然后更新,这次更新需要的时间比较慢,ADB 命令所在的目录 platform-tools的完整路径添加到系统的环境变量 PATH 中,就能够在命令中使用 ADB 命令了;ADT 插件,即 Android 开发工具。因为 ADT 在线安装容易遇到问题,增加一些不必要的麻烦所以需要下载后在本地安Eclipse,建议选择 Eclipse3.4 以上版本,网址为 Install New Softwa

13、re选项卡上的 Available Software,点击右侧的 Add,然后在 Name 框中填写Android,在 Location 框中选择上步下载的 ADT 文件,然后点击 OK Finish Install All,这时关闭 Eclipse 再重新启动。重启后选择 Eclipse 菜单中Window Preferences,在左侧的 Android 项目中 SDK Location 中填入 Android SDK 解压后的目录,然后点击 Apply。3 项目分析3.1 用户界面 加载界面:程序开始运行时显示加载界面,此界面是应用程序最先展示的窗口,所以,要尽量保持界面信息简洁,突出重

14、点实时天气界面:显示城市当前的实时天气状况,包括城市名称、天气描述、温度高低、风速、天气描述图片、获取数据时间未来天气界面:对未来 6 天的天气情况简要描述,简要显示星期、天气描述、温度高低等数据,使用户一目了然,使人们及选择城市界面:用户可以根据需要选择全国 2564 个县级以上城市并查看该城市的天气情况。在选择后,用户可以把该城市设经过以上分析可知,应用程序共需要四个界面,即加载界面、实时天气界面、未来天气界面、选择城市界面,来实现应用程序中的基本功能。3.2 异常分析经过分析,应用程序在连接网络和解析数据时,容易出现异常,所以在设计的时候应仔细分析原因,并且认真对待,在出现异常的地方给出

15、具体解决方案,使用户享受到更友好的体验。3.3 相关技术介绍ActivityAndroid 应用程序中,一个活动 Activity 通常就是一个单独的界面。每一个界面都被实现为一个独立的类,并且从 Activity 基类中 Activity 将会显示由空间组成的用户接口,并对事件做出响应。大多数的应用都是由多个Activity 显示组成,例如,第一这里的每一个界面就是一个 Activity,很容易是从一个界面到一个新的界面,并且完成新的 Activity。当一个新的界面打开后,前一简单理解,Activity 代表一个用户所能看到的界面,主要用于处理应用程序的整体性工作,例如,监听系统事件(按键

16、事件、触摸屏 View,启动其他Activity 等。所有应用的 Activity 都继承于 andvity 类,该类是AndroidActivity 继承该父类后,通过父类的方法实现各种功能,这种设计在其他领域也较为常见。IntentAndroid 基本的设计理念是鼓励减少组件间的耦合,因此 Android 提供了Intent(意图) ,Intent 提供了一种通用的消息系统,它允许 Intent 来执行动作和产生时间。使用 Intent 可以激活 Android 应用的三个核心组件:活动、Intent 可以划分为显示意图和隐式意图。显示意图调用 Intent。SetClass方法明确制定了

17、组件名的 Intent 为显示意图,显示意图明确 Intent 应该传递给那个组件,在同一个应用内部使用的。隐式意图没有明确指定组件名的Intent 为隐式意图。Android 系统会 action) 、类别(category) 、数据(URI和数据类型)找到最合适的组件来处理这个意图。Intent 负责对应用中一次操作的动作、动作涉及数据和附加数据进行描述,Android 则根据此 Intent 的描述,负责找到对应的组件, Intent 传递给调用的组件,并完成组件的调用。因此,Intent 在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信Service如果把 Activity

18、比喻为前台程序,那么 Service 就是后台程序,Service的整个生命周期都只会在后台执行。Service 跟 Activity 一样 Intent 调用。由于 Service 在后台运行,所以没有界面,用来处理耗时比较长,而且Service 不是一个单独的进程,也不是一个单 Service 有两种类型:本地服务(Local Service):用于应用程序内部远程服务(Remote Sercie):用于 android 系统内部的应用程序之间前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如 Activity 所属线程,而是单开线程后台执行Service 的生

19、命周期,Service 有 startService 和 bindService 两种启动Service 方法,每种方法 Service 的生命周期是不一样的。通过 startService()Service 会经历 onCreate - onStartCommand ,stopService 的时候直接 onDestroy,如果是调用者直接退出而没有调用stopService 的话,Service 会一直在后台运行,下次调用者再起来仍然可以stopService通过 bindService Service 只会运行 onCreate - onBind 这个时候调用者和 Service 绑定在

20、一起 unbindService 的时候 onUnbind - onDestroyed Srevice 就会调用 onUnbind - onDestroyed 。在这里需要注意的是 Service 的 onCreate 的方法只会被调用一次,startService 又 bindService,Service 只被创建一次。如果先是 bind 了,那么 start 的时候就直接运行 ServiceonStart 方法,如果先是 start,那么 bind 的时候就直接运行 onBind 方法。如果你先 bind 上了,就 stop 不掉了,只能先UnbindService, 再 StopSer

21、vice,所以是先 start 还是先 bind 行为是有区别的。布局方式有很多种,比如线性布局(Linear Layout) 、相对布局(Relative Layout) 、表格布局(Table Layout) 、网格视图 Grid View) 、标签布局(Tab Layout) 、列表视图(List View)和绝对布局(Absolute Layout) 。本文设计主要采用线性布局 Linear Layout) ,所以就线性布局我们来做简单地介绍。LinearLayout:线性布局是所布局中最常用的之一,RadioGroup, TabWidgetTableLayout,TableRow,Z

22、oomControls 类的父类。LinearLayout 可以让它的子元素垂直或水平的方式排成一行(不设置方向的时候默认按照垂直方向排列) 。LinearLayout 以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列LinearLayout 保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐) 。LinearLayout 还支持为单独的子元素指定 weight 。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,weight 值,剩余的空间就会按这些子元素指定的 weightweight 值为

23、 0。例如,如果有三个文本框,其中两个指定了 weight 值为 1,那么这两个文本框将控件介绍TextView 文本控件,可以用它来显示文字,就像一个标签一样,或者你可以认为是 6html 中的 span。对于 TextView 是怎么设置显 TextView 包含以下子类:Button CheckedTextView,Chronometer, DigitalClock,EditText。以下简单介绍 TextView 的属性:android:idandroid:layout_width 设置控件的宽度android:layout_height 设置控件的高度android:layout_m

24、arginTop 设置文本的上外边距android:textSize 设置文本文字的的大小android:paddingLeft 设置元素左内边距Button 按钮,在 button 内部可以放置内容,比如文本或图像。 与 标签之间的所有内容都是按钮 button 禁止使用的元素是图像映射,因为它对鼠标和键盘敏感的动作会干扰表单按钮的行为 Button 的属性:android:idandroid:layout_width 设置按钮的宽度android:layout_height 设置按钮的高度android:textSize 设置按钮里文字的大小android:layout_marginTop

25、 设置按钮的上外边距android:text 设置按钮中的文字android:visibility 设置按钮里的元素是否可见EditText 文本编辑框,TextView 的直接子类,所以 EditText 会继成父类 TextView 的一些方法 EditText 也需同时配置一个 Button,这样可以在代码中监听 Button 的事件,以便获取当前在 EditView 中输入的内容并且EditView 可以限制输入的字符串类型。以下简单介绍 EditText 的属性:android:idandroid:layout_width 设置输入框的宽度android:layout_height

26、设置输入框的高度android:layout_weightandroid:inputType 设置输入框内的字符串类型android:hintImageView 标签可以显示任意图像,例如图标。ImageView 类可以加载各种来源的图片(如资源或图片库) ,需要计算图像的尺寸,ImageView 的属性:android:idandroid:layout_width 设置图片的宽度android:layout_height 设置图片的高度android:visibility 设置图片是否可见性ProgressBar 进度条控件通常在应用程序执行诸如复制文件或打印文档等任务时使用。如果没有视觉提

27、示, ProgressBar,可以警告用户应用程序正在执行冗长的任务且应 ProgressBar 的属性:android:android:progress 设置进度条初始化的进度值android:secondaryProgress 设置二级进度条的值android:layout_gravity 设置进度条位置android:style 设置进度条的风格是长方形还是圆形CheckBox 复选框,通常用于某选项的打开或关闭,可以选择任意数目的复选框RadioButton 单选框,为用户提供由两个或多个互斥选项组成的选项集。虽然单选按钮和复选框看似功能类似,却存在4 界面设计及实现4.1 加载界面图

28、 4.1:加载界面设计图根据设计,实现加载界面 Load_Activity,使用的布局文件是 load.xml。TextView。界面布局如下所示:?xml version “1.0“ encoding “utf-8“? LinearLayout xmlns:android “android:layout_width “fill_parent“android:layout_height “fill_parent“android:orientation “vertical“ LinearLayout android:layout_width “fill_parent“ android:layou

29、t_height “wrap_content“ android:orientation “horizontal“ TextView android:layout_width “fill_parent“ android:layout_height “wrap_content“android:textSize “12pt“android:textStyle “bold“android:layout_marginTop “80dp“android:gravity “center_horizontal“android:text “string/siasU“/ TextView android:layo

30、ut_width “fill_parent“android:layout_height “wrap_content“android:textSize “20pt“android:textStyle “bold“android:layout_marginTop “60dp“android:gravity “center_horizontal“android:text “string/sias“/ LinearLayout android:orientation “vertical“ android:layout_width “fill_parent“ android:layout_height

31、“wrap_content“ android:layout_marginTop “100dp“ TextViewandroid:text “string/ab“android:layout_width “fill_parent“android:layout_height “wrap_content“android:gravity “center_horizontal“/ 在加载界面文件中,还需要设置引用的布局文件,然后逐个声明布局文件中对应的控件,并将这些控件与布局文件中的对应的控件绑定在一起。绑定过程为:引用 R.java 中控件元素对应的整型值,通过强制转换,将其转换为对应类型的控件,最后

32、与之绑定。这样做是为setContentView ;界面显示后,开始进行应用程序运行前的准备,主要有数据库的初始化和默认城市的天气数据下载工作。在数据库的初始化部分,首先检查数据库文件是否存在,若不存在则复制数据库文件到指定目录,若存在,则不进行此项操作。数据库初始化代码如下:/ 初始化,转移数据库文件try db_tools.init ;Sytln “复制数据库“ ;catch Exception e / TODO Auto-generated catch blockSytln “复制数据库时候异常“ ;e.printStackTrace ;TimerTask task new TimerT

33、ask public void run / TODO Auto-generated method stubintent new Intent Load_Activity.this, Weather_Service.class ;intent.putExtra “code“, db_tools.getDefaultCode ;Load_ActitService intent ;while true if Data_Key.getDownload_key ! 0 handler.sendEmptyMessage 0 ;break;加载界面通过不断检查状态码,知道下载过程结束,然后依据状态码,判断下

34、载是否成功,在进行操作。下载成功,则跳转到默认城市的实时天气界面,下载不成功,则通知用户联网失败等信息。代码如下:public void handleMessage Message msg / TODO Auto-generated method stubif Data_Key.getDownload_key Data_Key.LINK_ERROR Toast.makeText Load_Activity.this, “连接超时!请检查网络连接!“, Toast.LENGTH_LONG .show ;if Data_Key.getDownload_key Data_Key.LINK_SUCCE

35、SS timer.cancel ;Intent weatherIntent new Intent ;weatherIntent.setClass Load_Activity.this, Weather_Activity.class ;Load_ActitActivity weatherIntent ;Load_ActiService intent ;Load_ActiridePendingTransition anim.slide_in_left, anim.slide_out_right ; / 界面切换Load_Actish ;下载数据成功后,表示天气对象已经可以使用,下载服务将关闭,然后

36、切换到实时天气界面。4.2 实时天气界面图 4.2:实时天气界面设计图根据设计,实现实时天气界面 Weather_Activity,使用的布局文件是main.xml。8 个 TextView:城市名、天气描述、温 1 个 ImageView:天气图片,1 个Button:设置默认。实时天气界面布局:!- 上半部分 - LinearLayout android:orientation “horizontal“ android:layout_width “fill_parent“ android:layout_height “wrap_content“ !- 第一列:文字信息 - LinearLa

37、yout android:orientation “vertical“ android:layout_width “160dp“ android:layout_height “fill_parent“ android:paddingLeft “5dp“ TextViewandroid:id “+id/city“android:layout_width “wrap_content“android:layout_height “60dp“android:textSize “18pt“android:textStyle “bold“/ TextView android:id “+id/weather

38、“android:layout_width “140dp“android:layout_height “40dp“android:textSize “10pt“android:paddingLeft “2dp“android:layout_marginTop “20dp“/ TextView android:id “+id/temp“android:layout_width “140dp“android:layout_height “40dp“android:textSize “10pt“android:paddingLeft “4dp“/ TextView android:id “+id/w

39、ind“android:layout_width “140dp“android:layout_height “40dp“android:textSize “10pt“android:paddingLeft “2dp“/ !- 第一列:文字信息 结束 - !- 第二列:图片信息 - LinearLayout android:orientation “vertical“ android:layout_margin “5dp“ android:layout_width “fill_parent“ android:layout_height “fill_parent“ ImageViewandroid

40、:id “+id/img“android:layout_width “110dp“android:layout_height “110dp“ android:contentDescription “string/con“android:gravity “center_horizontal“android:visibility “visible“/ TextViewandroid:id “+id/date“android:layout_width “fill_parent“android:layout_height “wrap_content“android:layout_marginTop “

41、10dp“android:textSize “6pt“android:paddingLeft “6dp“/ !- 发布时间 - LinearLayout android:orientation “horizontal“ android:layout_width “fill_parent“ android:layout_height “wrap_content“ android:paddingLeft “5dp“ TextView android:id “+id/week“android:layout_width “wrap_content“android:layout_height “wrap

42、_content“android:textSize “6pt“/ TextView android:id “+id/inch“android:layout_width “wrap_content“android:layout_height “wrap_content“android:textSize “6pt“/ !- 发布时间 结束 - !- 不是默认 - Button android:id “+id/notDefault“android:layout_width “90dp“android:layout_height “35dp“android:textSize “6pt“android:

43、layout_marginTop “5dp“android:text “string/notDefault“android:visibility “gone“/ !- 是默认 - TextView android:id “+id/isDefault“android:layout_width “wrap_content“android:layout_height “wrap_content“android:text “string/isDefault“android:textSize “6pt“android:textStyle “italic“android:layout_marginTop

44、“9dp“android:visibility “gone“android:textColor “android:color/darker_gray“/ !- 第二列:图片信息 结束 - !- 上半部分 结束 - 在界面文件中,同样的方式设置引用的布局文件,以及设置绑定界面中的控件。界面加载到程序后,首先对界面中的控件元素进行赋值,将程序加载时候获得的天气数据逐个设置为控件显示的内容,设置完毕后,显示整个界面,这样,城市的详细天气数据就呈现出来了。布局过程如下:TextView city null;TextView weather null;TextView temp null;TextVie

45、w wind null;TextView date null;TextView week null;TextView inch null;TextView advice null;ImageView img null;Button feature null;TextView isDefault null;Button notDefault null;/ 获取界面中的控件city TextView findViewById ;weather TextView findViewById her ;temp TextView findViewById ;wind TextView findViewB

46、yId ;date TextView findViewById ;week TextView findViewById ;inch TextView findViewById ;advice TextView findViewById ce ;img ImageView findViewById ;feature Button findViewById ure ;feature.setOnClickListener new turnFeatureListener ;isDefault TextView findViewById fault ;notDefault Button findView

47、ById efault ;notDefault.setOnClickListener new setDefaultCodeListener ;这里需要说明的是,如果当前界面显示的是默认城市的天气信息的时候,会使用一个 TextView 提示显示的是默认城市,这时候设置默try / 是否显示为默认城市 判断if Data_Key.defaultCode “ return;else if Data_Key.defaultCode.equals weatherEntity.getCityid isDefault.setVisibility TextView.VISIBLE ;notDefault.s

48、etVisibility Button.GONE ;else isDefault.setVisibility TextView.GONE ;notDefault.setVisibility Button.VISIBLE ;如果当前城市不是默认城市,则会显示设置默认的按钮,点击后,会更新数据库文件中默认城市的信息,表现在界面中的操作为按钮消失,取而代之的是默认信息。这个操作过程在按钮的监听器里实现,过程如下:class setDefaultCodeListener implements OnClickListener public void onClick View v database_too

49、ls.setDefaultCode weatherEntity.getCityid ; / 设置数据库中的默认城市Data_Key.exit_key 1; / 用于关闭此页面的一个开关isDefault.setVisibility TextView.VISIBLE ;notDefault.setVisibility Button.GONE ;此外,实时天气界面还包含有菜单选项:选择城市和退出操作。点击按键,响应对应操作。菜单设置过程及功能实现如下:/* 菜单设置*/public boolean onCreateOptionsMenu Menu menu / TODO Auto-generated method stubmenu.add 0, SEARCH, 1, ch ;menu.add 0, EXIT, 2, ;return super.onCr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报