毕业设计(论文)-基于Android平台的天气软件开发--界面设计及异常处理.doc_第1页
毕业设计(论文)-基于Android平台的天气软件开发--界面设计及异常处理.doc_第2页
毕业设计(论文)-基于Android平台的天气软件开发--界面设计及异常处理.doc_第3页
毕业设计(论文)-基于Android平台的天气软件开发--界面设计及异常处理.doc_第4页
毕业设计(论文)-基于Android平台的天气软件开发--界面设计及异常处理.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文(设计)题 目 基于Android平台的天气软件开发 界面设计及异常处理 指导老师 职 称 姓 名 电 话专 业 计算机科学与技术 班 级 院 (系) 电子信息工程学院 完成时间 2012年4月20日 基于Android平台的天气软件开发界面设计及异常处理摘 要随着科技的发展,移动智能终端逐渐走进人们的视线,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。因此,关键应用程序的开发成为影响移动智能终端普及的重要因素,设计并开发实用、方便的应用程序具有重要的意义和良好的市场前景。Android作为当前最流行的操作平台,自然也存在着大量的应用服务需求。本课题研究的是基于Android平台下的天气软件,目的是帮助用户随时随地查询天气信息及天气变化情况,让生活更加舒适方便。本文详细讲述了Android平台下天气软件的界面设计及异常处理部分,主要包括界面的实现、控件的使用、界面的布局和异常的处理等内容,结合中国气象网的天气数据,将准确的天气情况以友好的方式呈现给用户,使用户可以更加赏心悦目地体验本软件的服务。关键字 Android/界面/控件/天气软件ANDROID PLATFORM-BASED WEATHER SOFTWARE DEVELOPMENTVIEW AND EXCEPTIONAbstractWith the development of science and technology, the mobile terminal gradually into the peoples 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 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 weather 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 interface, 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目 录中文摘要i英文摘要ii目 录iii1 绪论11.1 研究内容11.2 研究目的和意义11.3 研究前景12 Android开发环境及平台搭建32.1 Android开发环境介绍32.2 Android开发平台搭建33 项目分析53.1 用户界面53.2 异常分析53.3 相关技术介绍63.3.1 Activity63.3.2 Intent63.3.3 Service73.3.4 Layout布局83.3.5 控件介绍84 界面设计及实现114.1 加载界面114.2 实时天气界面144.3 未来天气界面214.4 选择城市界面274.5 版权及Logo设计305 异常处理315.1 联网异常315.2 解析异常316 界面测试33总结38致 谢39参考文献40401 绪论1.1 研究内容本文介绍了基于Android平台下天气软件的界面及异常处理部分内容,详细介绍了加载界面、实时天气界面、未来天气界面和搜索界面进行界面设计及实现,出现异常情况的处理等内容,目的是使用户能够更加赏心悦目地体验此软件带来的服务。通过对界面的布局及控件的应用等相关内容的学习,使我们对Android平台下界面开发工作有一个初步的了解,并且经过这次开发过程,能够基本掌握这些内容。软件开发后能够帮助用户随时随地搜索由中国气象局提供的全国2564个县级以上城市的天气信息,并且把数据显示在一个界面美观、布局合理窗口内,使用户能够舒适的享受软件带来的服务。1.2 研究目的和意义天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手机平台下都有各种各样的天气软件。Android作为现在主流的智能手机之一,自然也需要这方面的软件。天气关系到人们的日常生活,如告知温暖,方便出行等。此外,对未来天气的预测还可以帮助人们进行农作物的浇灌、施肥、收割等工作。基于Android平台的天气软件已经有很多,经过分析,用户第一眼往往是一个软件的外观,一个好看的界面才能让用户以一种爱美之心去尝试,才能进一步了解一个软件的好坏,所以吸引眼球的界面是争取用户的第一步。因此,界面设计工作对应用程序来说非常重要,在界面上吸引了用户,才能进一步让用户体验应用程序中的功能,使用这个软件。1.3 研究前景Android在中国的前景十分广阔,首先是有成熟的消费者,在国内,Android社区十分红火,这些社区为Android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了Android阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同时不仅仅局限于手机,国内厂家也陆续推出了采用Android系统的产品,我们可以预见Android将会被广泛应用在国产智能上网设备上,将进一步扩大Android系统的应用范围。另一方面,由于国内政策的限制,导致Android的部分功能(如Android market)在国内无法正常使用,目前常用的解决方法是使用VPN服务来访问。Android的主要竞争对手是苹果公司的IOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%,在美国手机市场的占有率达到了47.3%。到二月下旬Google公司正式宣布,Android设备每天激活量达到85万台,通过Google服务器激活的Android设备用户总数突破3亿台,距离2012年1月的数量,在短短1个月时间内全球共卖出5000万台安卓设备,平均每秒钟就卖出15台安卓设备。 Google官方数据显示,Android电子市场(Android Market)上的应用程序数量已经突破45万个,一年内增加30万个。相信在不久的将来会有更多的用户选择Android系统的手机。Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。2 Android开发环境及平台搭建2.1 Android开发环境介绍Android平台使用Java编程语言来开发应用程序,而Android提供了对Java的核心支持。考虑到Java虚拟机的执行效率和占用资源情况,Google重新设计了Java的编译器,命名为Dalvik。Dalvik是经过优化的Java编译器,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。项目的开发在Eclipse环境中进行,由于进行的是Android应用程序的开发,需要在Eclipse安装ADT插件,即Android开发工具,这样Eclipse就可以和Android SDK建立连接,在Eclipse中启动Android模拟器、调试程序等工作。由以上分析可知,Android平台的搭建需要Android SDK、Java SDK、Eclipse和ADT四个软件。2.2 Android开发平台搭建在进行Android应用程序的开发前,要先搭建Android平台,然后才能在开发环境中进行编程。根据官方指导,对Android平台的搭建过程介绍如下:首先,在官方网址上下载JDK6.0并安装,网址是/technetwork/java/javase/downloads/index.html,安装后设置系统环境变量JAVA_HOME、CLASS_PATH、PATH的值;然后,在官方网址上下载更新的SDK进行安装,官方网址为/sdk/index.html,下载完后解压到指定文件夹,启动SDK Manager进行安装,选择需要的Android版本,然后更新,这次更新需要的时间比较慢,所以更新前要做好准备。安装完成后,将ADB命令所在的目录platform-tools的完整路径添加到系统的环境变量PATH中,就能够在命令中使用ADB命令了;接下来要安装的是ADT插件,即Android开发工具。因为ADT在线安装容易遇到问题,增加一些不必要的麻烦所以需要下载后在本地安装。指定网址为/sdk/index.html,下载存放在指定的位置以便后面使用;最后,下载Eclipse,建议选择Eclipse3.4以上版本,网址为/downloads/,解压到指定位置后运行。选择Eclipse菜单中的HelpInstall New Software选项卡上的Available Software,点击右侧的Add,然后在Name框中填写Android,在Location框中选择上步下载的ADT文件,然后点击OKFinishInstall All,这时关闭Eclipse再重新启动。重启后选择Eclipse菜单中的WindowPreferences,在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击Apply。这样,整个平台的搭建工作就完成了。3 项目分析3.1 用户界面 根据应用程序的功能需要,对用户界面做如下分析:1. 加载界面:程序开始运行时显示加载界面,此界面是应用程序最先展示的窗口,所以,要尽量保持界面信息简洁,突出重点。这里设置为显示学校的名称、英文缩写及版权信息。此界面的作用是,不仅将软件的基本信息显示给用户,而且在加载的过程中进行数据的初始化工作,将应用程序运行时需要的天气信息提前做准备;2. 实时天气界面:显示城市当前的实时天气状况,包括城市名称、天气描述、温度高低、风速、天气描述图片、获取数据时间、日期、星期、温馨提示和是否默认城市等信息。此界面是应用程序的主界面,所以在设计的时候应尽量使界面美观,将天气数据以用户所容易接受的方式呈现出来;3. 未来天气界面:对未来6天的天气情况简要描述,简要显示星期、天气描述、温度高低等数据,使用户一目了然,使人们及时了解天气变化,对日常生活出行、穿衣做好准备;4. 选择城市界面:用户可以根据需要选择全国2564个县级以上城市并查看该城市的天气情况。在选择后,用户可以把该城市设置为默认,再次打开应用程序就可以直接看到该城市的天气状况。经过以上分析可知,应用程序共需要四个界面,即加载界面、实时天气界面、未来天气界面、选择城市界面,来实现应用程序中的基本功能。3.2 异常分析当应用程序中的界面没有正常显示天气数据,出现假死或者跑出程序错误时,视为程序异常。经过分析,应用程序在连接网络和解析数据时,容易出现异常,所以在设计的时候应仔细分析原因,并且认真对待,在出现异常的地方给出具体解决方案,使用户享受到更友好的体验。3.3 相关技术介绍3.3.1 Activity在Android应用程序中,一个活动Activity通常就是一个单独的界面。每一个界面都被实现为一个独立的类,并且从Activity基类中继承而来,Activity将会显示由空间组成的用户接口,并对事件做出响应。大多数的应用都是由多个Activity显示组成,例如,第一个界面用来显示加载界面,第二界面用来显示实时天气界面,第三个界面用来显示未来一周的天气界面。这里的每一个界面就是一个Activity,很容易是从一个界面到一个新的界面,并且完成新的Activity。当一个新的界面打开后,前一个界面将会暂停,并保留在历史栈中。用户可以返回到历史栈中的前一个界面,当界面不再使用时,从历史栈中删除。简单理解,Activity代表一个用户所能看到的界面,主要用于处理应用程序的整体性工作,例如,监听系统事件(按键事件、触摸屏事件等),为用户显示指定的View,启动其他Activity等。所有应用的Activity都继承于android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法实现各种功能,这种设计在其他领域也较为常见。3.3.2 IntentAndroid基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其他的应用程序间传递Intent来执行动作和产生时间。使用Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。Intent可以划分为显示意图和隐式意图。显示意图调用Intent。SetClass方法明确制定了组件名的Intent为显示意图,显示意图明确制定了Intent应该传递给那个组件,在同一个应用内部使用的。隐式意图没有明确指定组件名的Intent为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。Intent负责对应用中一次操作的动作、动作涉及数据和附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的结构。3.3.3 Service如果把Activity比喻为前台程序,那么Service就是后台程序,Service的整个生命周期都只会在后台执行。Service跟 Activity一样也由Intent调用。由于Service在后台运行,所以没有界面,用来处理耗时比较长,而且Service不是一个单独的进程,也不是一个单独的线程。Service有两种类型:1. 本地服务(Local Service):用于应用程序内部;2. 远程服务(Remote Sercie):用于android系统内部的应用程序之间;前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。后者可被其他应用程序复用,例如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。Service的生命周期,Service有startService和bindService两种启动Service方法,每种方法Service的生命周期是不一样的。A. 通过startService() Service会经历 onCreate - onStartCommand(),stopService的时候直接onDestroy,如果是调用者直接退出而没有调用stopService的话,Service会一直在后台运行,下次调用者再起来仍然可以stopService;B. 通过bindService() Service只会运行onCreate()-onBind() 这个时候调用者和Service绑定在一起 unbindService的时候onUnbind() - onDestroyed(),调用者退出了,Srevice就会调用onUnbind() - onDestroyed()。在这里需要注意的是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又 bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,只能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。3.3.4 Layout布局布局方式有很多种,比如线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)和绝对布局(Absolute Layout)。本文设计主要采用线性布局(Linear Layout),所以就线性布局我们来做简单地介绍。线性布局 LinearLayout:线性布局是所用布局中最常用的方式之一,RadioGroup, TabWidget,TableLayout,TableRow,ZoomControls类的父类。LinearLayout可以让它的子元素垂直或水平的方式排成一行(不设置方向的时候默认按照垂直方向排列)。LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。LinearLayout还支持为单独的子元素指定weight 。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight 值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。3.3.5 控件介绍1. TextView 文本控件,可以用它来显示文字,就像一个标签一样,或者你可以认为是html中的span。对于TextView是怎么设置显示的文本,怎样设置字体的大小,字体的颜色,字体的样式。TextView包含以下子类:Button, CheckedTextView,Chronometer,DigitalClock,EditText。以下简单介绍TextView的属性: android:id 控件的标识符 android:layout_width 设置控件的宽度 android:layout_height 设置控件的高度 android:layout_marginTop 设置文本的上外边距 android:textSize 设置文本文字的的大小 android:paddingLeft 设置元素左内边距2. Button 按钮控件,在button内部可以放置内容,比如文本或图像。与标签之间的所有内容都是按钮的内容,其中包括任何可接受的正文内容,比如文本或或多媒体。比如,我们可以在按钮中包括了一个图像和相关的文本,用它们在按钮中创建一个吸引人的标记图像。不过button禁止使用的元素是图像映射,因为它对鼠标和键盘敏感的动作会干扰表单按钮的行为。以下简单介绍Button的属性: android:id 控件的标识符 android:layout_width 设置按钮的宽度 android:layout_height 设置按钮的高度 android:textSize 设置按钮里文字的大小 android:layout_marginTop 设置按钮的上外边距 android:text 设置按钮中的文字 android:visibility 设置按钮里的元素是否可见3. EditText 文本编辑框,TextView的直接子类,所以EditText会继成父类TextView的一些方法。在布局中配置EditText也需同时配置一个Button,这样可以在代码中监听Button的事件,以便获取当前在EditView中输入的内容并且显示出来。在EditView可以限制输入的字符串类型。以下简单介绍EditText的属性: android:id 控件的标识符 android:layout_width 设置输入框的宽度 android:layout_height 设置输入框的高度 android:layout_weight 设置输入框占父控件的比例 android:inputType 设置输入框内的字符串类型 android:hint 设置在输入框输入内容前默认的文字4. ImageView 标签可以显示任意图像,例如图标。ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,以便它可以在其他布局中使用,并提供例如缩放和着色等各种显示选项,在本文用来显示天气图片。以下简为ImageView的属性: android:id 设置图片的标识符 android:layout_width 设置图片的宽度 android:layout_height 设置图片的高度 android:visibility 设置图片是否可见性5. ProgressBar 进度条控件,通常在应用程序执行诸如复制文件或打印文档等任务时使用。如果没有视觉提示,应用程序的用户可能会认为应用程序不响应。通过在应用程序中使用 ProgressBar,可以警告用户应用程序正在执行冗长的任务且应用程序仍在响应。以下简单介绍ProgressBar的属性: android:max 设置进度条的最大进度值 android:progress 设置进度条初始化的进度值 android:secondaryProgress 设置二级进度条的值 android:layout_gravity 设置进度条位置 android:style 设置进度条的风格是长方形还是圆形6. CheckBox 复选框,通常用于某选项的打开或关闭,可以选择任意数目的复选框;7. RadioButton 单选框,为用户提供由两个或多个互斥选项组成的选项集。虽然单选按钮和复选框看似功能类似,却存在重要差异:当用户选择某单选按钮时,同一组中的其他单选按钮不能同时选定。相反,却可以选择任意数目的复选框。定义单选按钮组将告诉用户,这里有一组选项,您可以从中选择一个且只能选择一个。4 界面设计及实现4.1 加载界面加载界面是程序开始运行时加载的界面。由分析可知,界面的主要功能是为应用程序的运行做准备,包括数据库的初始化工作,下载默认城市天气信息等。在界面中主要显示的应用程序的基本信息,内容有学校名、英文简称和版权信息。设计如下:图4.1:加载界面设计图根据设计,实现加载界面Load_Activity,使用的布局文件是load.xml。整个界面采用线性布局的方式,方向为纵向。界面中的内容使用三个三个文本域居中显示,用到三个TextView。加载界面布局如下所示: 在加载界面文件中,还需要设置引用的布局文件,然后逐个声明布局文件中对应的控件,并将这些控件与布局文件中的对应的控件绑定在一起。绑定过程为:引用R.java中控件元素对应的整型值,通过强制转换,将其转换为对应类型的控件,最后与之绑定。这样做是为了方便应用程序对界面中的控件进行操作。设置过程如下:setContentView(R.layout.load);界面显示后,开始进行应用程序运行前的准备,主要有数据库的初始化和默认城市的天气数据下载工作。在数据库的初始化部分,首先检查数据库文件是否存在,若不存在则复制数据库文件到指定目录,若存在,则不进行此项操作。数据库初始化代码如下:/ 初始化,转移数据库文件try db_tools.init();System.out.println(复制数据库); catch (Exception e) / TODO Auto-generated catch blockSystem.out.println(复制数据库时候异常);e.printStackTrace();初始化数据库文件后,进行默认城市天气数据的下载工作。首先打开数据库,查找默认城市的程式码,然后依据城市码生成链接,启动下载数据服务。下载过程完成后,设置下载状态码,返回。过程如下:TimerTask task = new TimerTask()public void run() / TODO Auto-generated method stubintent = new Intent(Load_Activity.this, Weather_Service.class);intent.putExtra(code, db_tools.getDefaultCode();Load_Activity.this.startService(intent);while(true)if(Data_Key.getDownload_key() != 0)handler.sendEmptyMessage(0);break;加载界面通过不断检查状态码,知道下载过程结束,然后依据状态码,判断下载是否成功,在进行操作。下载成功,则跳转到默认城市的实时天气界面,下载不成功,则通知用户联网失败等信息。代码如下: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_SUCCESS)timer.cancel();Intent weatherIntent = new Intent();weatherIntent.setClass(Load_Activity.this, Weather_Activity.class);Load_Activity.this.startActivity(weatherIntent);Load_Activity.this.stopService(intent);Load_Activity.this.overridePendingTransition(anim.slide_in_left, anim.slide_out_right); / 界面切换Load_Activity.this.finish();下载数据成功后,表示天气对象已经可以使用,下载服务将关闭,然后切换到实时天气界面。4.2 实时天气界面实时天气界面显示的是一个城市的实时天气情况,是应用程序的主界面。通过分析,界面中的内容应包括城市名、天气描述、温度、风速、天气图片、日期、星期、发布时间、是否默认城市、温馨提示等详细的天气信息,对实时天气界面设计如下:图4.2:实时天气界面设计图根据设计,实现实时天气界面Weather_Activity,使用的布局文件是main.xml。整个界面的布局同样采用线性布局的方式。这里首先将整个界面分为上下两个部分,然后上半部分又分为左右两个部分,在左边

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论