毕业设计(论文)-基于安卓的手机日程管理系统.doc_第1页
毕业设计(论文)-基于安卓的手机日程管理系统.doc_第2页
毕业设计(论文)-基于安卓的手机日程管理系统.doc_第3页
毕业设计(论文)-基于安卓的手机日程管理系统.doc_第4页
毕业设计(论文)-基于安卓的手机日程管理系统.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第二章系统开发的平台与设计2012届毕业设计(论文)题题目目基于安卓的手机日程管理系统姓名姓名学号学号专业专业计算机科学与技术班级班级指导教师指导教师2012年年6月月基于安卓的手机日程管理系统摘要随着生活节奏的逐步加快,人们常会有许多的重要工作需要去安排或完成,个人的日常工作、领导的重要会议、个人重要日期或者时间等。这些工作都需要在特定的时间给予醒目标识或者提示。而为了能尽可能的减少人们的负担,来更有效率的工作和更舒适的生活。这就需要有专门的日程管理系统来安排这些事务。日程管理系统的主要功能是完成个人一般日程和重要日程安排并提供提醒和查看的功能。如今随着信息技术的高速发展,手机已经成为现代人们生活所必不可少的物品,将其作为日程管理系统的平台可以说是一个很好的选择。而且现如今手机安卓系统已经成为一门及其热门的技术,因此我选择将基于安卓的手机日程管理系统作为我的毕业设计课题。本系统是一个基于安卓手机平台的日程管理系统,具有基本的日程活动的增、删、改、查功能,在日历浏览中可突出显示有安排的日期。用户可根据不同的活动设置任务,便于对日程的管理。系统还具备提醒程序,可帮助管理重要活动,并且实现与网络数据同步的功能。系统是基于安卓的基础知识和Java语言,以及SQLite提供的数据的管理来开发的,最终取得了较圆满的成果。关键词:关键词:日程管理Java安卓目目录录摘摘要要.I目目录录.I第一章第一章绪论绪论.11.1课题背景.11.2安卓平台简介.21.2.1安卓平台特色介绍.21.2.2安卓系统编程语言.31.3安卓开发的现状.3第二章第二章系统开发环境与相关技术系统开发环境与相关技术.42.1系统开发的环境.42.2系统开发软件的简介.42.2.1Eclipse的简介.42.2.2其他软件的简介.52.3安卓环境的搭建.52.3.1软件下载准备.52.3.2JDK安装.52.3.3AndroidSDK安装.62.3.4ADT安装.72.3.5创建AVD.72.4系统开发编程语言的简介.8第三章第三章系统需求分析及概要设计系统需求分析及概要设计.103.1系统的需求分析.103.2系统的概要设计.103.2.1系统的功能模块说明.103.2.2系统的功能模块结构图.10第四章第四章系统的详细设计系统的详细设计.134.1系统主界面的设计和实现.134.1.1系统主界面的头部菜单栏.134.1.2系统的日历界面.144.1.2系统的日历特色显示.164.2系统任务界面的设计.174.2.1任务界面的数据库准备.184.2.2任务界面之新增界面.20i4.2.3任务界面之总日程界面.284.2.3任务界面之单一日程界面.304.2.4任务界面之实现对已有日程日期的标记.314.3系统设置界面.324.4系统关于界面.334.5系统底部菜单项.344.5.1日历界面使用的底部菜单项.344.5.2其他界面使用的底部菜单项的总览.36参考文献参考文献.37第一章绪论0第一章绪论1.1课题背景课题背景当今社会是信息社会,人们无论何时、无论何地都是在与信息打交道,您阅读的报纸是信息、看到的广告是信息、电视传播的是信息、上网浏览的是信息,当代人简直生活在“信息海洋”中。这么多的信息哪些是有用的,哪些是无用的,人们在信息丰富的社会中,难免会忘记一些重要信息,有时会掉一个寻呼机,有时会掉一个电话本或笔记本什么的,这些“信息载体”也许包含着重要的个人信息。如何将这些有用的信息存储起来避免忘记或丢失,如何对这些有用信息进行有序地组织、管理以资对生活决策提供帮助,这正是信息管理软件要解决的问题。进入21世纪以来,无所不在的计算将打破传统意义上的计算机概念:使用更方便、移动更容易、功能更多样化的各种具有计算机功能的设备大量出现,并且在需要时,可以随时通过无线方式连接到移动数据通信网络中,以便高效地交换信息和获得各种服务。这种设备人们称之为无限设备(MobileDevice)。移动设备最根本的特征是移动性,即能够利用无线电波、微波或红外线等传输介质允许通信中的设备在一定范围内自由移动,其位置不受束缚,从而实现通信双方至少有一方在移动中进行信息传输和交换的目的。移动设备从产生到现在的历史并不长,然而其发展速度却远远超出人们的预料。现如今,移动设备大行其道,全球有超过十亿部移动电话正在被使用,并且这个数目正在逐渐增加。在除美国之外的每个发达国家,拥有手机的人数比拥有计算机的人数更多。而目前,随着移动设备越来越普及及移动硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来。目前国内最常见的移动开发平台有SymbianiPhoneWindowsPhone以及Android。如今国内外都有非常多的Android系统的用户。自从2011年第一季度,Android在全球份额首次超过Symbian,跃居全球第一。截止2012年2月据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。考虑到如今手机系统的发展现状,以及Android平台系统自身所拥有的优势。因此,基于安卓平台开发一款手机应用软件具有较大的意义和可行性。11.2安卓平台简介安卓平台简介Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android4.0IceCreamSandwich(冰激凌三明治)以及还在测试中的Android5.0JellyBean(果冻豆)。1.2.1安卓平台特色介绍1.开放性在优势方面,Android平台首先就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。2.挣脱运营商的束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。3.丰富的硬件选择这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。4.不受任何限制的开发商Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、第一章绪论2暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。1.2.2安卓系统编程语言在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用CC+作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qtforandroid)、Mono(monoforandroid)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的AndroidSimple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。在Android系统底层方面,Android使用CC+作为开发语言。而Android应用层的开发,基本上全部是采用Java开发。但和我们一般互联网上应用的JAVA还是有些区别的。此”JAVA是google自己做的一套实现来实现,和SUN的底层是不太一样的。不过对开发应用区别不大。1.3安卓开发的现状安卓开发的现状目前国内的Android开发还是主要以应用开发为主,主要分成3类:为企业开发应用、开发通用应用(放到AndroidMarket或者其他AppMarket销售)以及游戏开发(放到AndroidMarket或者其他AppMarket销售)。第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。除了根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是2种:为国外公司进行外包开发,或者通过Google的移动广告(AdMob)通过广告点击分成。而理论上的通过付费下载的形式来盈利的,现在国内鲜见成功者。第三类开发者,目前和第二类开发者类似。下图是开发者提交的应用和游戏的数目所占的比例图,从中也可以看出应用开发数目远超游戏开发。3第二章系统开发环境与相关技术2.1系统开发的环境系统开发的环境Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的JavaSDK(其中包括JRE:JavaRuntimeEnvironment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的AndroidSDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。(1)Eclipse(2)JDK(3)AndroidSDK(4)ADT(AndroidDevelopmentTools)2.2系统开发软件的简介系统开发软件的简介2.2.1Eclipse的简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如CC+和COBOL等编程语言的第二章系统开发环境与相关技术4插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。2.2.2其他软件的简介(1)JDKJDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。从SUN的JDK5.0开始提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。(2)AndroidSDKSDK:(softwaredevelopmentkit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,AndroidSDK指的既是Android专属的软件开发工具包。(3)ADT(AndroidDevelopmentTools)目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。2.3安卓环境的搭建安卓环境的搭建2.3.1软件下载准备分别下载JDK、Eclipse、AndroidSDK,并首先解压Eclipse完成安装。2.3.2JDK安装首先按提示完成SDK安装,然后设置环境变量(非必须)。1.我的电脑-属性-高级-环境变量-系统变量中添加以下环境变量:52.JAVA_HOME值为:E:AndroidJavajdk1.6.0_21(我所安装JDK的目录)3.CLASSPATH值:.%JAVA_HOME%libtools.jar%JAVA_HOME%libdt.jar%JAVA_HOME%bin4.Path:在开始追加%JAVA_HOME%bin安装完成之后,检查JDK是否安装成功。打开窗口,输入javaversion查看JDK的版本信息。出现下面的画面表示安装成功了,如图2-1:图2-1安卓环境设置JDK效果测试图2.3.3AndroidSDK安装下载完成后解压到任意路径(我的解压路径为E:Androidandroid-sdk-windows)运行SDKSetup.,点击AvailablePackages。选择希望安装的SDK及其文档或者其它包,按需点击下面选项(开始下载安装所选包)在用户变量中新建PATH值为:AndroidSDK中的tools绝对路径(本机为D:AndroidDevelopandroid-sdk-windowstools)。完成按“确定”后,重新启动计算机。重启计算机以后,进入命令窗口,检查SDK是不是安装成功。运行androidh出现以下的画面,表明安装成功,如图2-2:第二章系统开发环境与相关技术6图2-2安卓环境设置SDK效果测试图2.3.4ADT安装打开Eclipse,进入菜单中的Help-InstallNewSoftware点击Add.按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http:dl-72.4系统开发编程语言的简介系统开发编程语言的简介Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。Java编程语言的风格十分接近C、C+语言。Java是一个纯的面向对象的程序设计语言,它继承了C+语言面向对象技术的核心,Java舍弃了C+语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java平台是基于Java语言的平台。Java的特点:1.平台无关性平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。2.安全性Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。第二章系统开发环境与相关技术83.面向对象Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。4.分布式Java建立在扩展TCPIP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。5.健壮性Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Bytecode校验等功能。6.解释型我们知道CC+等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。Java不像C或C+,它不针对CPU芯片进行编译,而是把程序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了java虚拟机(JVM)的任何系统上被解释执行。7.动态java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。第三章系统需求分析及概要设计0第三章系统需求分析及概要设计3.1系统的需求分析系统的需求分析该系统是一个基于安卓平台的手机日程管理软件。它是为本软件的持有者提供日程管理方面服务的,它包括日历的查看、日历上日期对应日程的查看、总日程的查看、日程的增加、日程的删除、日程的修改、对本软件的设置以及软件相关信息的查看等。本软件有助于人们记住重要的日程并给予提醒,也有助于人们更好的调节自己的时间来减轻生活上的一些负担,更轻松及有效的过好每一天。3.2系统的概要设计系统的概要设计3.2.1系统的功能模块说明(1)日历查看模块:拥有一个完整的日历界面,包括头部的年月日、生肖、闰年的显示,还有每个日期上都分别有阳历和阴历的日期显示,并且日历中包含了各个重要的节日或纪念日等。在日历界面上每个日期都会跳到当前日期的日程添加界面或者是日程显示界面。日历界面上还有对存在日程的标记,有利于人们更好的管理日程。(2)日程管理模块:在本模块中包括总的日程显示页面和日历页面所跳转到的日程显示界面或者是日程添加界面。总日程显示界面每一个日程都会有它所包含的日期、时间、日程类型、重复类型和日程内容。日历日期所对应的日程显示界面也是相应的显示。而在日程添加界面中包含了显示界面所对应的各项数据、添加日程成功后会有对应日历日期的标记。另外也有对日程的一系列管理操作的功能。(3)设置界面模块:在设置中包括了对日程的类型和重复类型的默认设置。(4)关于界面模块:关于界面中包含了本软件的设计信息及一些基本信息。3.2.2系统的功能模块结构图在程序设计分析的基础上,结合实际情况,得出本程序的功能模块结构图。在结构图中包括了功能模块的表示及其中部分功能的实现原理。1首先是一个总的功能模块的结构图,其中包括了系统设计时的总体功能概括,如图3-1。日程管理系统主界面日历模块任务模块设置模块关于模块日历显示总日程显示类型设置关于界面单一日程显示图3-1总系统功能模块然后在总体的功能模块后面是主体功能的详细模块显示。在日历界面显示上可分为几个部分,详细见图3-2,日历显示阴历显示节假日显示日期显示图3-2日历显示模块日历模块日历模块日历模块第三章系统需求分析及概要设计2还有就是日程的功能模块的详细介绍。总体书写了日程添加界面的功能点,结构图如图3-3所示,新建日程显示重复类型选择日程时间书写日程类型选择日程内容书写图3-3日程界面模块第四章系统详细设计0第四章系统的详细设计4.1系统主界面的设计和实现系统主界面的设计和实现4.1.1系统主界面的头部菜单栏制作这个头部菜单栏是为了提升软件的可操作性,我用的是TabHost+RadioGroup相结合的方法来制作这个部分的。菜单栏的底部位置是通过TabHost这个布局来实现的,然后是LinearLayout的线性布局来布置内容。内部的选项卡是通过TabWiget来实现首先建立好Android工程(我的工程名为:ScheduleManager),在工程下的reslayout下建立一个名为main的空xml文件,然后在这个文件里按照思路来添加布局代码。主界面的菜单选项使用RadioGroup来建立,在这里的布局中RadioGroup里容纳4个RadioButton,而RadioButton是单选按钮。在这种情况下就只有也只能有一个RadioButton能被选择,并且在开始时默认了第一个按钮被选中。其中RadioButton的实现方式是在设置了内部的文字,然后再按钮的顶部上添加上图片,实现的代码如下:从上述代码可以看到,在菜单的每个选项卡样式都是调用了style上的main_tab_bottom来实现样式的,而main_tab_bottom的背景background的值是drawablebtn_bg,btn_bg不是一个简单的背景图片,而是一个xml文件,通过这个文件可以实现菜单选项卡切换时的背景切换的效果,使得这个菜单栏更加的美观,代码是使用了安卓的selector来实现,在这里是通过不停的条件来判断使用哪一个item的,里面包括了几个属性值,如是否获得焦点、是否响应事件、是否点击三个条件。实施的代码如下:1制定完主页面布局后,在srccom.manage.activity下的MainPage文件中OnCreate(OnCreate方法是用来初始化Activity实例对象的)中调用布局,到现在为止顶部菜单栏的布局已经基本完成,但现在里面所对应的内容还是空的。所以就需要在这里给tabHost中添加tab内容,以第一格的tab为例,先是通过Intent的方式新建个mDate,用来实现页面的跳转的方法,然后动态用tabHost来通过addTab的方法添加对应TabSpec的值和各个属性。最后在添加RadioGroup的选择操作函数这里是通过switch来完成对应按钮的功能的实现,在每个case项中通过tabHost.setCurrentTabByTag来给与特定的值实现页面上的跳转。最终的效果如图4-1:图4-1头部菜单栏效果图4.1.2系统的日历界面系统主界面默认选择日历界面在头部菜单栏下方。(1)首先是建立一个布局文件,上面一部分是显示年月日、生肖和农历的干支纪年。使用的是一个TextView类,对应的在日历的CalendarActivity文件中加入函数来添加头部的年份等信息。首先需要写了一个CalendarView类,这是为日历显示所写的一个类,在其中使用重载的方法定义了几个不同参数的CalendarView,用于不同的情况。在CalendarActivity中实例化CalendarView并且使用CalendarView中的一个方法CalendarView(thisgetResources()jumpMonthjumpYearyear_cmonth_cday_c)然后书写方法来添加头部的年份闰哪月等信息。第四章系统详细设计2首先是对这个页面的头部进行布局,通过动态化的方法来完成。然后建立一个可以进行改变值的StringBuffer类型的参数textDate。对这个参数进行append操作,添加例如年月日的知道参数里。其中有一个闰年判断的条件函数,是通过calV.getLeapMonth()的值惊醒判断的。完成后对界面使用setText方法来赋值到界面上。最后是对界面的一些美化,同样使用动态布局模式进行。(2)下面是日历界面中主体日期部分显示的完成在CalendarActivity文件初始化实例对象时加入动态添加布局文件的方法。我将此方法命名为addGridView。在这个方法中同样是先进行动态化布局,由于这里用的是GridView,这个GridView应用于将一系列的空间组织成二维网格的形式显示出来,所以适用于我在这里进行的日期界面的建立。同样的首先是动态化布局的建立,这可以实例化GridView为gridView参数进行的。在这里需要添加GridView控件的列为7,列宽为46。并且还加上判断屏幕大小的条件,这需要加入取得屏幕大小的对应函数,这里如果是800480屏幕的话,就将列宽设置为69。然后进行设置水平和竖直的间距、取值边框、设置居中等操作。在这个方法里面还需加入个OnTouch方法,用来将gridView中的触摸事件回传给gestureDetector,进行下面的触摸操作,即:将gridview中的触摸事件回传给gestureDetectorOverridepublicbooleanonTouch(ViewvMotionEventevent)returnCalendarActivity.this.gestureDetector.onTouchEvent(event)创建完日历的布局后,是在里面添加上具体的日期。就当前显示的页面来说,是建立几个对应的参数,用来显示或传接数据。例如在函数开始时就StringdayNumber=newString49这是作为对GridView控件内进行标记序列的,用于下面条件语句的判断等,还有就是界面内的一些控件名的实例化。然后是动态化的对页面进行属性值的设置。其中在对日期中的第一行,即周一等值的这行,设置字的颜色及背景图。得出这行的位置就需要通过对参数position(对应编号)进行判断是否在7以内。下一步是当前月信息的显示,这也需要条件函数来判断是否为当前月,也是来判断参数position是否在范围内。在这个月中还需对当天来一个特殊化,即设置当天日期的背3景为图片current_day_bgc,字色为白。在这些操作外,还需要得到一些数值来用于日期数据的插入,在这里建立了个getCalendar方法,如判断是否为闰年的函数返回值isLeapyear,某月的总天数,某月的第一天是星期几,上个月总天数。在这方法中再执行方法getweek,用来得出以后需要标记的日期,这个在后面来介绍。通过上述的步骤基本完成了日历界面中的初步建设。(3)由于日历菜单需要能通过手势触摸来进行翻页,所以要在总体布局下建立一个ViewFlipper类,这个类是用来实现屏幕的切换效果的。先是在布局中建立这个类,然后实例化手势gestureDetector并取得布局中ViewFlipper用于下面的调用。然后是书写书写手势的各个方法,最主要的是onFling的方法,在这里实现了页面的向左及向右滑动的操作,这个操作是由条件语句来实现的,由滑动两点的x坐标的值进行差值计算,如果是起点减去重点大于120时着向左滑动,反之则向右滑动。在滑动操作开始,并且已切换一面后就需要载入新的一张日历页面,这里又会用到参数calV,当向左滑动时则将参数calV所代表的函数CalendarView里的jumpMonth加1,代表下一个月;当向右滑动时则将参数calV所代表的函数CalendarView里的jumpMonth减1,代表上一个月。为了完整性剩余的手势函数只是写了方法未使用。4.1.2系统的日历特色显示在日历的显示中除了一些基本的日期显示,在日期页面头部有每年相应的生肖和闰年显示,在日期上有每日的阴历以及节假日的显示。这里有两个方法,分别是LunarCalendar和SpecialCalendar。在LunarCalendar里面包括干支纪年,阴历,生肖,节假日等信息。例如生肖则是建立一个字节数组来记录十二生肖,并且用函数来传回参数对应的生肖。finalpublicStringanimalsYear(intyear)finalStringAnimals=newString鼠牛虎兔龙蛇马羊猴鸡狗猪returnAnimals(year-4)%12同样的其他信息,如节假日的名称,也是通过字节数组来储存的。在SpecialCalendar是闰年的判断函数,每月天数,以及对每月的第一天星期的判断。第四章系统详细设计4闰年通过传回年值通过函数进行判断,并传回布尔值。每月的天数用switch进行判断赋值给月份天数的参数。对每月的第一天为星期几的判断并指定。指定某年中的某月的第一天是星期几publicintgetWeekdayOfMonth(intyearintmonth)Calendarcal=Calendar.getInstance()cal.set(yearmonth-11)dayOfWeek=cal.get(Calendar.DAY_OF_WEEK)-1returndayOfWeek最终的效果如图4-2:图4-2日历界面的最终实现图4.2系统任务界面的设计系统任务界面的设计任务界面包括任务主界面(所有日程的显示)和对应日期任务的显示,任务的添加等。在任务界面涉及到日程的数据存储,所以先介绍下关于日程的数据存储以及有日程的日期存储(为日历界面的标记服务)。54.2.1任务界面的数据库准备(1)数据库里表的建立分别建立了schedule表(日程的表)和scheduletagdate(标记日期所需的表)Android提供了标准的数据库创建方式。建立DBOpenHelper类继承到SQLiteOpenHelper实现onCreate和onUpgrade两个方法。OnCreate方法是用于初次使用软件时生成数据库,onUpgrade方法是用于升级软件时更新数据库表结构。首先是schedule表的建立,在这个表中包括日程ID、日程类型的ID、日程重复类型的ID、日程正文内容、日程日程时间这几个参数。建立时对应需要写上参数名、参数类型、主键等。db.cSQL(CREATETABLEIFNOTEXISTSschedule(scheduleIDintegerprimarykeyautoincrementscheduleTypeIDintegerremindIDintegerscheduleContenttextscheduleDatetext)下面是scheduletagdate表的建立,在这个表中包括标记的ID、年信息、月信息、日信息、日程ID这几个参数。db.cSQL(CREATETABLEIFNOTEXISTSscheduletagdate(tagIDintegerprimarykeyautoincrementyearintegermonthintegerdayintegerscheduleIDinteger)建立完表后是继续写入onUpgrade方法,这个方法会在数据库升级时被触发,以便于软件升级时更新表结构。publicvoidonUpgrade(SQLiteDatabasedbintoldVersionintnewVersion)db.cSQL(DROPTABLEIFEXISTSschedule)db.cSQL(DROPTABLEIFEXISTSscheduletagdate)onCreate(db)(2)再分别建立ScheduleVO和ScheduleDateTag,里面分别写了表里面各个数据的get(表示获取某个变量值)和set(表示设置某个变量值)方法,以便于调用。(3)建立ScheduleDAO文件,这个文件是用来写数据库的查找、删除等方法。首先是需要实例化DBOpenHelper用于数据库数据的get与set。privat

温馨提示

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

评论

0/150

提交评论