基于Android的手机日程管理系统论文.doc_第1页
基于Android的手机日程管理系统论文.doc_第2页
基于Android的手机日程管理系统论文.doc_第3页
基于Android的手机日程管理系统论文.doc_第4页
基于Android的手机日程管理系统论文.doc_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

2012 届毕业设计(论文) 题题 目目基于安卓的手机日程管理系统 姓名姓名 学号学号 专业专业计算机科学与技术 班级班级 指导教师指导教师 2012 年年 6 月月 基于安卓的手机日程管理系统 摘 要 随着生活节奏的逐步加快,人们常会有许多的重要工作需要去安排或完成,个人的 日常工作、领导的重要会议、个人重要日期或者时间等。这些工作都需要在特定的时间 给予醒目标识或者提示。而为了能尽可能的减少人们的负担,来更有效率的工作和更舒 适的生活。这就需要有专门的日程管理系统来安排这些事务。日程管理系统的主要功能 是完成个人一般日程和重要日程安排并提供提醒和查看的功能。 如今随着信息技术的高速发展,手机已经成为现代人们生活所必不可少的物品,将 其作为日程管理系统的平台可以说是一个很好的选择。而且现如今手机安卓系统已经成 为一门及其热门的技术,因此我选择将基于安卓的手机日程管理系统作为我的毕业设计 课题。 本系统是一个基于安卓手机平台的日程管理系统,具有基本的日程活动的增、删、 改、查功能,在日历浏览中可突出显示有安排的日期。用户可根据不同的活动设置任务, 便于对日程的管理。系统还具备提醒程序,可帮助管理重要活动,并且实现与网络数据 同步的功能。 系统是基于安卓的基础知识和 Java 语言,以及 SQLite 提供的数据的管理来开发的, 最终取得了较圆满的成果。 关键词:关键词:日程管理 Java 安卓 MobilePhone Schedule Management System Based On Android Abstract As the pace of life has been accelerating gradually, people often have many of the important work need to arrange or complete, personal daily work, leadership of the important meeting, personal important date or time, etc. All this work need to be in particular time to give marked logo or hints. And in order to reduce the burden of the people as much as possible, to more efficient work and more comfortable life. This has to be special schedule management system to arrange these affairs. Schedule management systems main function is to make the personal general schedule and important schedules and provide remind and view function. And now, with the high speed development of information technology, the mobile phone has become the modern people living an essential items, as a schedule management system platform can be said to be a very good choice. And now two mobile phone system, already become a and its popular technology, so I choose will be based on the mobile phone schedule management system andros as my graduation design task. This system is a result of the mobile platform based on schedule management system, have the basic agenda of activity increase and delete, change, check function, in the calendar can browse highlight is the date of the arrangement. Users can set according to different activities task, and is convenient for the management of the schedule. The system also has the remind program can help manage the important activities, and realize and network data synchronization function. System is based on the foundation of andros knowledge and Java language, and to provide the data management SQLite to development, and finally achieved satisfactory results. Key words: Schedule management; Java;Android 目目 录录 摘摘 要要 .I ABSTRACTII 目目 录录 .I 第一章第一章 绪论绪论.1 1.1 课题背景.1 1.2 安卓平台简介.2 1.2.1 安卓平台特色介绍2 1.2.2 安卓系统编程语言3 1.3 安卓开发的现状.3 第二章第二章 系统开发环境与相关技术系统开发环境与相关技术.4 2.1 系统开发的环境.4 2.2 系统开发软件的简介.4 2.2.1 Eclipse 的简介 4 2.2.2 其他软件的简介.5 2.3 安卓环境的搭建5 2.3.1 软件下载准备5 2.3.2 JDK 安装.5 2.3.3 Android SDK 安装6 2.3.4 ADT 安装7 2.3.5 创建 AVD.7 2.4 系统开发编程语言的简介.8 第三章第三章 系统需求分析及概要设计系统需求分析及概要设计.10 3.1 系统的需求分析.10 3.2 系统的概要设计.10 3.2.1 系统的功能模块说明10 3.2.2 系统的功能模块结构图10 第四章第四章 系统的详细设计系统的详细设计.13 4.1 系统主界面的设计和实现.13 4.1.1 系统主界面的头部菜单栏13 4.1.2 系统的日历界面14 4.1.2 系统的日历特色显示16 4.2 系统任务界面的设计.17 4.2.1 任务界面的数据库准备18 4.2.2 任务界面之新增界面20 4.2.3 任务界面之总日程界面28 4.2.3 任务界面之单一日程界面30 4.2.4 任务界面之实现对已有日程日期的标记31 4.3 系统设置界面.32 4.4 系统关于界面.33 4.5 系统底部菜单项.34 4.5.1 日历界面使用的底部菜单项34 4.5.2 其他界面使用的底部菜单项的总览36 结束语结束语.38 参考文献参考文献.39 致谢致谢.40 第一章 绪论 1.1 课题背景课题背景 当今社会是信息社会,人们无论何时、无论何地都是在与信息打交道,您阅读的报 纸是信息、看到的广告是信息、电视传播的是信息、上网浏览的是信息,当代人简直生 活在“信息海洋”中。这么多的信息哪些是有用的,哪些是无用的,人们在信息丰富的 社会中,难免会忘记一些重要信息,有时会掉一个寻呼机,有时会掉一个电话本或笔记 本什么的,这些“信息载体”也许包含着重要的个人信息。如何将这些有用的信息存储 起来避免忘记或丢失,如何对这些有用信息进行有序地组织、管理以资对生活决策提供 帮助,这正是信息管理软件要解决的问题。 进入 21 世纪以来,无所不在的计算将打破传统意义上的计算机概念:使用更方便、 移动更容易、功能更多样化的各种具有计算机功能的设备大量出现,并且在需要时,可 以随时通过无线方式连接到移动数据通信网络中,以便高效地交换信息和获得各种服务。 这种设备人们称之为无限设备(Mobile Device)。移动设备最根本的特征是移动性,即能够 利用无线电波、微波或红外线等传输介质允许通信中的设备在一定范围内自由移动,其 位置不受束缚,从而实现通信双方至少有一方在移动中进行信息传输和交换的目的。移 动设备从产生到现在的历史并不长,然而其发展速度却远远超出人们的预料。 现如今,移动设备大行其道,全球有超过十亿部移动电话正在被使用,并且这个数 目正在逐渐增加。在除美国之外的每个发达国家,拥有手机的人数比拥有计算机的人数 更多。 而目前,随着移动设备越来越普及及移动硬件的提升,移动设备的功能越来越完善, 移动设备的系统平台也日渐火热起来。目前国内最常见的移动开发平台有 Symbian,iPhone,Windows Phone 以及 Android。如今国内外都有非常多的 Android 系统的 用户。自从 2011 年第一季度,Android 在全球份额首次超过 Symbian,跃居全球第一。截 止 2012 年 2 月据,Android 占据全球智能手机操作系统市场 52.5%的份额,中国市场占有 率为 68.4%。 考虑到如今手机系统的发展现状,以及 Android 平台系统自身所拥有的优势。因此, 基于安卓平台开发一款手机应用软件具有较大的意义和可行性。 1.2 安卓平台简介安卓平台简介 Android 一词的本义指“机器人” ,同时也是 Google 于 2007 年 11 月 5 日宣布的基于 Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软 件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为 Android 4.0 Ice Cream Sandwich (冰激凌三明治) 以及还在测试中的 Android 5.0Jelly Bean(果冻豆) 。 1.2.1 安卓平台特色介绍 1.开放性 在优势方面,Android 平台首先就是其开放性,开放的平台允许任何移动终端厂商加 入到 Android 联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日 益丰富,一个崭新的平台也将很快走向成熟。开发性对于 Android 的发展而言,有利于积 累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软 件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心 仪的手机。 2.挣脱运营商的束缚 在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什 么功能接入什么网络,几乎都受到运营商的控制。自从 iPhone 上市,用户可以更加方便 地连接网络,运营商的制约减少。随着 EDGE、HSDPA 这些 2G 至 3G 移动网络的逐步过 渡和提升,手机随意接入网络已不是运营商口中的笑谈。 3.丰富的硬件选择 这一点还是与 Android 平台的开放性相关,由于 Android 的开放性,众多的厂商会推 出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、 甚至软件的兼容。好比你从诺基亚 Symbian 风格手机一下改用苹果 iPhone,同时还可将 Symbian 中优秀的软件带到 iPhone 上使用、联系人等资料更是可以方便地转移。 4.不受任何限制的开发商 Android 平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条 条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、 暴力、情色方面的程序和游戏如何控制正是留给 Android 难题之一。 1.2.2 安卓系统编程语言 在 Android 中,开发者可以使用 Java 作为编程语言来开发应用程序,也可以通过 NDK 使用 C/C+作为编程语言来开发应用程序,也可使用 SL4A 来使用其他各种脚本语 言进行编程(如:python、lua、tcl、php 等等) ,还有其他诸如:Qt(qt for android) 、 Mono(mono for android)等一些著名编程框架也开始支持 Android 编程,甚至通过 MonoDroid,开发者还可以使用 C#作为编程语言来开发应用程序。另外,谷歌还在 2009 年特别发布了针对初学者的 Android Simple 语言,该语言类似 Basic 语言。而在网页编程 语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap 等等都已 经支持 Android 开发。 在 Android 系统底层方面,Android 使用 C/C+作为开发语言。而 Android 应用层的 开发,基本上全部是采用 Java 开发。但和我们一般互联网上应用的 JAVA 还是有些区别 的。 此”JAVA“是 google 自己做的一套实现来实现,和 SUN 的底层是不太一样的。不过 对开发应用区别不大。 1.3 安卓开发的现状安卓开发的现状 目前国内的 Android 开发还是主要以应用开发为主,主要分成 3 类:为企业开发应 用、开发通用应用(放到 Android Market 或者其他 App Market 销售)以及游戏开发(放 到 Android Market 或者其他 App Market 销售) 。 第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设 计手机或者平板电脑的总体方案。除了根据需求对系统进行定制外,更多的工作在于为 这些系统编写定制的应用。 第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是 2 种:为国外公司进行外包开发,或者通过 Google 的移动广告(AdMob)通过广告点击分 成。而理论上的通过付费下载的形式来盈利的,现在国内鲜见成功者。 第三类开发者,目前和第二类开发者类似。下图是开发者提交的 应用和游戏的数目 所占的比例图, 从中也可以看出应用开发数目远超游戏开发。 第二章 系统开发环境与相关技术 2.1 系统开发的环境系统开发的环境 Android 的上层应用程序是用 Java 语言开发,同时还需要基于 Dalvik 虚拟机,所以, Google 公司推荐使用主流的 Java 继承开发环境 Eclipse。只有 Eclipse 还不够, 因为是使 用 Java 语言进行开发, 还应该有由 SUN 公司提供的 Java SDK(其中包括 JRE:Java Runtime Environment)。此外,Android 的应用程序开发和 Java 开发有较大区别的,所以 还需要有 Google 提供的 Android SDK。同时,还需要在 Eclipse 安装 ADT,为 Android 开发提供开发工具的升级或者变更,是 Eclipse 下开发工具的升级下载的工具。简言之, 需要以下软件,才能搭建 Android 开发环境,从而进行 Android 应用程序的开发。 (1) Eclipse (2) JDK (3) Android SDK (4) ADT(Android Development Tools) 2.2 系统开发软件的简介系统开发软件的简介 2.2.1 Eclipse 的简介 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是 一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个 标准的插件集,包括 Java 开发工具(Java Development Kit,JDK) 。 虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE) ,这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许 他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员 都具有同等的发挥场所。 这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发 的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+ 和 COBOL 等编程语言的 插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用 程序类型的基础,比如内容管理系统。 2.2.2 其他软件的简介 (1)JDK JDK(Java Development Kit)是 Sun Microsystems 针对 Java 开发员的产品。自从 Java 推 出以来,JDK 已经成为使用最广泛的 Java SDK。JDK 是整个 Java 的核心,包括了 Java 运行环境,Java 工具和 Java 基础的类库。JDK 是学好 Java 的第一步。而专门运行在 x86 平台的 Jrocket 在服务端运行效率也要比 Sun JDK 好很多。从 SUN 的 JDK5.0 开始,提供了 泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 (2) Android SDK SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定 的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 因此,Android SDK 指的既是 Android 专属的软件开发工具包。 (3)ADT(Android Development Tools) 目前 Android 开发所用的开发工具是 Eclipse,在 Eclipse 编译 IDE 环境中,安装 ADT,为 Android 开发提供开发工具的升级或者变更,简单理解为在 Eclipse 下开发工具 的升级下载工具。 2.3 安卓环境的搭建安卓环境的搭建 2.3.1 软件下载准备 分别下载 JDK、Eclipse、Android SDK,并首先解压 Eclipse 完成安装。 2.3.2 JDK 安装 首先按提示完成 SDK 安装,然后设置环境变量(非必须)。 1.我的电脑-属性-高级-环境变量-系统变量中添加以下环境变量: 2.JAVA_HOME 值为:E:AndroidJavajdk1.6.0_21(我所安装 JDK 的目录) 3.CLASSPATH 值: .;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin; 4.Path: 在开始追加 %JAVA_HOME%bin; 安装完成之后,检查 JDK 是否安装成功。打开 cmd 窗口,输入 java version 查看 JDK 的版本信息。出现下面的画面表示安装成功了,如图 2-1: 图 2-1 安卓环境设置 JDK 效果测试图 2.3.3 Android SDK 安装 下载完成后解压到任意路径(我的解压路径为 E:Androidandroid-sdk-windows) 运行 SDK Setup.exe,点击 Available Packages。 选择希望安装的 SDK 及其文档或者其它包,按需点击下面选项(开始下载安装所选 包 ) 在用户变量中新建 PATH 值为:Android SDK 中的 tools 绝对路径(本机为 D:AndroidDevelopandroid-sdk-windowstools) 。 完成按“确定”后,重新启动计算机。重启计算机以后,进入 cmd 命令窗口,检查 SDK 是不是安装成功。 运行 android h 出现以下的画面,表明安装成功,如图 2-2: 图 2-2 安卓环境设置 SDK 效果测试图 2.3.4 ADT 安装 打开 Eclipse,进入菜单中的 “Help“ - “Install New Software“ 点击 Add.按钮,弹出对话框要求输入 Name 和 Location:Name 自己随便取, Location 输入 /android/eclipse。 确定返回后,在 work with 后的下拉列表中选择我们刚才添加的 ADT,点击下面出现 的 Developer Tools,展开它会有 Android DDMS 和 Android Development Tool,勾选他们, 然后按步骤完成。 完成之后: 选择 Window Preferences. 在左边的面板选择 Android,然后在右侧点击 Browse. 并选中 SDK 路径,本机为: E:Androidandroid-sdk-windows 点击 Apply。配置完成。 2.3.5 创建 AVD 为使 Android 应用程序可以在模拟器上运行,必须创建 AVD。 1、在 Eclipse 中。选择 Windows Android SDK and AVD Manager 2、点击左侧面板的 Virtual Devices,再右侧点击 New 3、填入 Name,选择 Target 的 API,SD Card 大小任意,Skin 随便选,Hardware 目前保 持默认值 4、点击 Create AVD 即可完成创建 AVD 综上一切完成后安卓环境搭建完成。 2.4 系统开发编程语言的简介系统开发编程语言的简介 Java 是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的, 结构的中立的,可移植的,性能很优异的多线程的,动态的语言。 Java 编程语言的风格十分接近 C、C+语言。Java 是一个纯的面向对象的程序设计 语言,它继承了 C+ 语言面向对象技术的核心,Java 舍弃了 C +语言中容易引起错误 的指针(以引用取代) 、运算符重载(operator overloading) 、多重继承(以接口取代)等 特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序 员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming) 、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于 一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节 码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编 译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在 一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有 了大幅提升。与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。 全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。 “Java 语言靠群 体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。 这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言 的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无 关、可移植、高性能、多线程和动态的语言。 Java 平台是基于 Java 语言的平台。 。 Java 的特点: 1.平台无关性 平台无关性是指 Java 能运行于不同的平台。Java 引进虚拟机 原理,并运行于虚拟机, 实现不同平台的 Java 接口之间。使用 Java 编写的程序能在世界范围内共享。Java 的数据 类型与 机器无关,Java 虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上, 实现 Java 二进制代码的解释执行功能, 提供于不同平台的接口的。 2.安全性 Java 的编程类似 C+,学习过 C+的读者将很快掌握 Java 的精髓。Java 舍弃了 C+ 的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病 毒通过指针侵入系统。Java 对程序提供了安全管理器,防止程序的非法访问。 3.面向对象 Java 吸取了 C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序 的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次 编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用 上。Java 提供了众多的一般对象的类,通过继承即可使用父类的方法。在 Java 中,类的 继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类为 Object 类,Object 类 功能强大,经常会使用到它及其它派生的子类。 4.分布式 Java 建立在扩展 TCP/IP 网络平台上。库函数提供了用 HTTP 和 FTP 协议传送和接受 信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 5.健壮性 Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出 现的错误。Java 自己操纵内存减少了内存出错的可能性。Java 还实现了真数组,避免了 覆盖数据的可能,这些功能特征大大提高了开发 Java 应用程序的周期。并且 Java 还提供 了 Null 指针检测、数组边界检测、异常出口、Byte code 校验等功能。 6.解释型 我们知道 C,C+等语言,都是针对 CPU 芯片进行编译,生成机器代码,该代码的运 行就和特定的 CPU 有关。Java 不像 C 或 C+,它不针对 CPU 芯片进行编译,而是把程 序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了 java 虚拟机(JVM)的任何系统上被解释执行。 7.动态 java 程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而 类又是运行时动态装载的,这就使得 Java 可以在分部环境中动态的维护程序及分类,而 不像 C+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修 改程序,重新编译。 第三章 系统需求分析及概要设计 3.1 系统的需求分析系统的需求分析 该系统是一个基于安卓平台的手机日程管理软件。它是为本软件的持有者提供日程 管理方面服务的,它包括日历的查看、日历上日期对应日程的查看、总日程的查看、日 程的增加、日程的删除、日程的修改、对本软件的设置以及软件相关信息的查看等。 本软件有助于人们记住重要的日程并给予提醒,也有助于人们更好的调节自己的时 间来减轻生活上的一些负担,更轻松及有效的过好每一天。 3.2 系统的概要设计系统的概要设计 3.2.1 系统的功能模块说明 (1)日历查看模块:拥有一个完整的日历界面,包括头部的年月日、生肖、闰年的 显示,还有每个日期上都分别有阳历和阴历的日期显示,并且日历中包含了各个重要的 节日或纪念日等。在日历界面上每个日期都会跳到当前日期的日程添加界面或者是日程 显示界面。日历界面上还有对存在日程的标记,有利于人们更好的管理日程。 (2)日程管理模块:在本模块中包括总的日程显示页面和日历页面所跳转到的日程 显示界面或者是日程添加界面。总日程显示界面每一个日程都会有它所包含的日期、时 间、日程类型、重复类型和日程内容。日历日期所对应的日程显示界面也是相应的显示。 而在日程添加界面中包含了显示界面所对应的各项数据、添加日程成功后会有对应日历 日期的标记。另外也有对日程的一系列管理操作的功能。 (3)设置界面模块:在设置中包括了对日程的类型和重复类型的默认设置。 (4)关于界面模块:关于界面中包含了本软件的设计信息及一些基本信息。 3.2.2 系统的功能模块结构图 在程序设计分析的基础上,结合实际情况,得出本程序的功能模块结构图。在结构图 中包括了功能模块的表示及其中部分功能的实现原理。 首先是一个总的功能模块的结构图,其中包括了系统设计时的总体功能概括,如图 3- 1。 日程管理系统 主界面 日历模块任务模块设置模块关于模块 日历显示总日程显示 类型设置 关于界面 单一日程显示 图 3-1 总系统功能模块 然后在总体的功能模块后面是主体功能的详细模块显示。在日历界面显示上可分为 几个部分,详细见图 3-2, 日历显示阴历显示 节假日显示 日期显示 图 3-2 日历显示模块 日历模块日历模块日历模块 还有就是日程的功能模块的详细介绍。总体书写了日程添加界面的功能点,结构图 如图 3-3 所示, 新建日程显示 重复类型选择 日程时间书写 日程类型选择 日程内容书写 图 3-3 日程界面模块 第四章 系统的详细设计 4.1 系统主界面的设计和实现系统主界面的设计和实现 4.1.1 系统主界面的头部菜单栏 制作这个头部菜单栏是为了提升软件的可操作性,我用的是 TabHost+RadioGroup 相 结合的方法来制作这个部分的。菜单栏的底部位置是通过 TabHost 这个布局来实现的,然 后是 LinearLayout 的线性布局来布置内容。内部的选项卡是通过 TabWiget 来实现 首先建立好 Android 工程(我的工程名为:ScheduleManager) ,在工程下的 res/layout 下建立一个名为 main 的空 xml 文件,然后在这个文件里按照思路来添加布局代码。 主界面的菜单选项使用RadioGroup来建立,在这里的布局中RadioGroup里容纳4个 RadioButton,而RadioButton是单选按钮。在这种情况下就只有也只能有一个RadioButton 能被选择,并且在开始时默认了第一个按钮被选中。其中RadioButton的实现方式是在设 置了内部的文字,然后再按钮的顶部上添加上图片,实现的代码如下: 从上述代码可以看到,在菜单的每个选项卡样式都是调用了 style 上的 main_tab_bottom 来实现样式的,而 main_tab_bottom 的背景 background 的值是 drawable/btn_bg ,btn_bg 不是一个简单的背景图片,而是一个 xml 文件,通过这个文 件可以实现菜单选项卡切换时的背景切换的效果,使得这个菜单栏更加的美观,代码是 使用了安卓的 selector 来实现,在这里是通过不停的条件来判断使用哪一个 item 的,里面 包括了几个属性值,如是否获得焦点、是否响应事件、是否点击三个条件。实施的代码 如下: 制定完主页面布局后,在 src/com.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(this, getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);然后书写方 法来添加头部的年份 闰哪月等信息。 首先是对这个页面的头部进行布局,通过动态化的方法来完成。 然后建立一个可以进行改变值的 StringBuffer 类型的参数 textDate。对这个参数进 行 append 操作,添加例如年月日的知道参数里。其中有一个闰年判断的条件函数,是通 过 calV.getLeapMonth()的值惊醒判断的。完成后对界面使用 setText 方法来赋值到界面 上。 最后是对界面的一些美化,同样使用动态布局模式进行。 (2)下面是日历界面中主体日期部分显示的完成 在 CalendarActivity 文件初始化实例对象时加入动态添加布局文件的方法。 我将此方法命名为 addGridView。在这个方法中同样是先进行动态化布局,由于这 里用的是 GridView,这个 GridView 应用于将一系列的空间组织成二维网格的形式显示出 来,所以适用于我在这里进行的日期界面的建立。 同样的首先是动态化布局的建立,这可以实例化 GridView 为 gridView 参数进行的。 在这里需要添加 GridView 控件的列为 7,列宽为 46。并且还加上判断屏幕大小的条件, 这需要加入取得屏幕大小的对应函数,这里如果是 800*480 屏幕的话,就将列宽设置为 69。然后进行设置水平和竖直的间距、取值边框、设置居中等操作。 在这个方法里面还需加入个 OnTouch 方法,用来将 gridView 中的触摸事件回传给 gestureDetector,进行下面的触摸操作,即: /将gridview中的触摸事件回传给gestureDetector Override public boolean onTouch(View v, MotionEvent event) return CalendarActivity.this.gestureDetector .onTouchEvent(event); ); 创建完日历的布局后,是在里面添加上具体的日期。就当前显示的页面来说,是建 立几个对应的参数,用来显示或传接数据。例如在函数开始时就String dayNumber = new String49; 这是作为对GridView控件内进行标记序列的,用于下面条件语句的判断等,还 有就是界面内的一些控件名的实例化。 然后是动态化的对页面进行属性值的设置。 其中在对日期中的第一行,即周一等值的这行,设置字的颜色及背景图。得出这行 的位置就需要通过对参数position(对应编号)进行判断是否在7以内。 下一步是当前月信息的显示,这也需要条件函数来判断是否为当前月,也是来判断 参数position是否在范围内。在这个月中还需对当天来一个特殊化,即设置当天日期的背 景为图片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 里面包括干支纪年,阴历,生肖,节假日等信息。 例如生肖则是建立一个字节数组来记录十二生肖,并且用函数来传回参数对应的生肖。 final public String animalsYear(int year) final String Animals = new String “鼠“, “牛“, “虎“, “兔“, “龙“, “ 蛇“,“马“, “羊“, “猴“, “鸡“, “狗“, “猪“ ; return Animals(year - 4) % 12; 同样的其他信息,如节假日的名称,也是通过字节数组来储存的。 在 SpecialCalendar 是闰年的判断函数,每月天数,以及对每月的第一天星期的判断。 闰年通过传回年值通过函数进行判断,并传回布尔值。 每月的天数用 switch 进行判断赋值给月份天数的参数。 对每月的第一天为星期几的判断并指定。 /指定某年中的某月的第一天是星期几 public int getWeekdayOfMonth(int year, int month) Calendar cal = Calendar.getInstance(); cal.set(year, month-1, 1); dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1; return dayOfWeek; 最终的效果如图4-2: 图 4-2 日历界面的最终实现图 4.2 系统任务界面的设计系统任务界面的设计 任务界面包括任务主界面(所有日程的显示)和对应日期任务的显示,任务的添加 等。 在任务界面涉及到日程的数据存储,所以先介绍下关于日程的数据存储以及有日程 的日期存储(为日历界面的标记服务) 。 4.2.1 任务界面的数据库准备 (1)数据库里表的建立 分别建立了 schedule 表(日程的表)和 scheduletagdate(标记日期所需的表) Android 提供了标准的数据库创建方式。建立 DBOpenHelper 类继承到 SQLiteOpenHelper ,实 现 onCreate 和 onUpgrade 两个方法。 OnCreate 方法是用于初次使用软件时生成数据库,onUpgrade 方法是用于升级软件时 更新数据库表结构。 首先是 schedule 表的建立,在这个表中包括日程 ID、日程类型的 ID、日程重复类型 的 ID、日程正文内容、日程日程时间这几个参数。建立时对应需要写上参数名、参数类 型、主键等。 db.execSQL(“CREATE TABLE IF NOT EXISTS schedule(scheduleID integer primary key autoincrement,scheduleTypeID integer,remindID integer,scheduleContent text,scheduleDate text)“); 下面是scheduletagdate表的建立,在这个表中包括标记的ID、年信息、月信息、日信 息、日程ID这几个参数。 db.execSQL(“CREATE TABLE IF NOT EXISTS scheduletagdate(tagID integer primary key autoincrement,year integer,month integer,day integer,scheduleID integer)“); 建立完表后是继续写入 onUpgrade 方法,这个方法会在数据库升级时被触发,以便于 软件升级时更新表结构。 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) db.execSQL(“DROP TABLE IF EXISTS schedule“); db.execSQL(“DROP TABLE IF EXISTS scheduletagdate“); onCreate(db); (2)再分别建立ScheduleVO 和ScheduleDateTag ,里面分别写了表里面各个数据的 get(表示获取某个变量值)和set(表示设置某个变量值)方法,以便于调用。 (3)建立ScheduleDAO文件,这个文件是用来写数据库的查找、删除等方法。 首先是需要实例化DBOpenHelper用于数据库数据的get与set。 private DBOpenHelper dbOpenHelper = null; public ScheduleDAO(Context context) dbOpenHelper = new DBOpenHelper(context, “schedules.db“); 下面就是对表中数据的操作了,包括了保存日程信息、查询某一条日程信息、查询 所有的信息、删除日程、将日程标记的日期保存到数据库中。 (1)保存日程信息,先是从日程添加页面里获取日程类型的ID、日程重复类型的 ID、日程正文内容、日程日程时间这几个参数,然后是使用ContentValues类(这个类是 一个键值对,是用来存储名值对,它的名一般是String类型,而值都是基本类型)来new 一个参数,用这个参数的put方法将这些个参数放入到数据库中。

温馨提示

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

评论

0/150

提交评论