




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于安卓的手机日程管理系统毕业论文基于安卓的手机日程管理系统毕业论文 目目 录录 摘摘 要要 I ABSTRACT II 目目 录录 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 i 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 第一章 绪论 0 第一章 绪论 1 1 课题背景课题背景 当今社会是信息社会 人们无论何时 无论何地都是在与信息打交道 您阅读的报 纸是信息 看到的广告是信息 电视传播的是信息 上网浏览的是信息 当代人简直生 活在 信息海洋 中 这么多的信息哪些是有用的 哪些是无用的 人们在信息丰富的 社会中 难免会忘记一些重要信息 有时会掉一个寻呼机 有时会掉一个电话本或笔记 本什么的 这些 信息载体 也许包含着重要的个人信息 如何将这些有用的信息存储 起来避免忘记或丢失 如何对这些有用信息进行有序地组织 管理以资对生活决策提供 帮助 这正是信息管理软件要解决的问题 进入 21 世纪以来 无所不在的计算将打破传统意义上的计算机概念 使用更方便 移动更容易 功能更多样化的各种具有计算机功能的设备大量出现 并且在需要时 可 以随时通过无线方式连接到移动数据通信网络中 以便高效地交换信息和获得各种服务 这种设备人们称之为无限设备 Mobile Device 移动设备最根本的特征是移动性 即能够 利用无线电波 微波或红外线等传输介质允许通信中的设备在一定范围内自由移动 其 位置不受束缚 从而实现通信双方至少有一方在移动中进行信息传输和交换的目的 移 动设备从产生到现在的历史并不长 然而其发展速度却远远超出人们的预料 现如今 移动设备大行其道 全球有超过十亿部移动电话正在被使用 并且这个数 目正在逐渐增加 在除美国之外的每个发达国家 拥有手机的人数比拥有计算机的人数 更多 而目前 随着移动设备越来越普及及移动硬件的提升 移动设备的功能越来越完善 移动设备的系统平台也日渐火热起来 目前国内最常见的移动开发平台有 Symbian iPhone Windows Phone 以及 Android 如今国内外都有非常多的 Android 系统的 用户 自从 2011 年第一季度 Android 在全球份额首次超过 Symbian 跃居全球第一 截 止 2012 年 2 月据 Android 占据全球智能手机操作系统市场 52 5 的份额 中国市场占有 率为 68 4 考虑到如今手机系统的发展现状 以及 Android 平台系统自身所拥有的优势 因此 基于安卓平台开发一款手机应用软件具有较大的意义和可行性 南京工业大学本科生毕业设计 论文 1 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 平台提供给第三方开发商一个十分宽泛 自由的环境 因此不会受到各种条 条框框的阻扰 可想而知 会有多少新颖别致的软件会诞生 但也有其两面性 血腥 第一章 绪论 2 暴力 情色方面的程序和游戏如何控制正是留给 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 通过广告点击分 成 而理论上的通过付费下载的形式来盈利的 现在国内鲜见成功者 第三类开发者 目前和第二类开发者类似 下图是开发者提交的 应用和游戏的数目 所占的比例图 从中也可以看出应用开发数目远超游戏开发 南京工业大学本科生毕业设计 论文 3 第二章 系统开发环境与相关技术 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 等编程语言的 第二章 系统开发环境与相关技术 4 插件已经可用 或预计将会推出 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 我的电脑 属性 高级 环境变量 系统变量中添加以下环境变量 南京工业大学本科生毕业设计 论文 5 2 JAVA HOME 值为 E Android Java jdk1 6 0 21 我所安装 JDK 的目录 3 CLASSPATH 值 JAVA HOME lib tools jar JAVA HOME lib dt 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 Android android sdk windows 运行 SDK Setup exe 点击 Available Packages 选择希望安装的 SDK 及其文档或者其它包 按需点击下面选项 开始下载安装所选 包 在用户变量中新建 PATH 值为 Android SDK 中的 tools 绝对路径 本机为 D AndroidDevelop android sdk windows tools 完成按 确定 后 重新启动计算机 重启计算机以后 进入 cmd 命令窗口 检查 SDK 是不是安装成功 运行 android h 出现以下的画面 表明安装成功 如图 2 2 第二章 系统开发环境与相关技术 6 图 2 2 安卓环境设置 SDK 效果测试图 2 3 4 ADT 安装 打开 Eclipse 进入菜单中的 Help Install New Software 点击 Add 按钮 弹出对话框要求输入 Name 和 Location Name 自己随便取 Location 输入 http dl 确定返回后 在 work with 后的下拉列表中选择我们刚才添加的 ADT 点击下面出现 的 Developer Tools 展开它会有 Android DDMS 和 Android Development Tool 勾选他们 然后按步骤完成 完成之后 选择 Window Preferences 在左边的面板选择 Android 然后在右侧点击 Browse 并选中 SDK 路径 本机为 E Android android 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 综上一切完成后安卓环境搭建完成 南京工业大学本科生毕业设计 论文 7 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 对程序提供了安全管理器 防止程序的非法访问 第二章 系统开发环境与相关技术 8 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 那样 没档期类库升级以后 如果想让程序具有新类库提供的功能 就需要修 改程序 重新编译 第三章 系统需求分析及概要设计 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 在工程下的 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 的 里面 包括了几个属性值 如是否获得焦点 是否响应事件 是否点击三个条件 实施的代码 如下 南京工业大学本科生毕业设计 论文 1 制定完主页面布局后 在 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 然后书写方 法来添加头部的年份 闰哪月等信息 第四章 系统详细设计 2 首先是对这个页面的头部进行布局 通过动态化的方法来完成 然后建立一个可以进行改变值的 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 String 49 这是作为对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 里面包括干支纪年 阴历 生肖 节假日等信息 例如生肖则是建立一个字节数组来记录十二生肖 并且用函数来传回参数对应的生肖 final public String animalsYear int year final String Animals new String 鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪 return Animals year 4 12 同样的其他信息 如节假日的名称 也是通过字节数组来储存的 在 SpecialCalendar 是闰年的判断函数 每月天数 以及对每月的第一天星期的判断 第四章 系统详细设计 4 闰年通过传回年值通过函数进行判断 并传回布尔值 每月的天数用 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 系统任务界面的设计系统任务界面的设计 任务界面包括任务主界面 所有日程的显示 和对应日期任务的显示 任务的添加 等 南京工业大学本科生毕业设计 论文 5 在任务界面涉及到日程的数据存储 所以先介绍下关于日程的数据存储以及有日程 的日期存储 为日历界面的标记服务 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 第四章 系统详细设计 6 public ScheduleDAO Context context dbOpenHelper new DBOpenHelper context schedules db 下面就是对表中数据的操作了 包括了保存日程信息 查询某一条日程信息 查询 所有的信息 删除日程 将日程标记的日期保存到数据库中 1 保存日程信息 先是从日程添加页面里获取日程类型的ID 日程重复类型的 ID 日程正文内容 日程日程时间这几个参数 然后是使用ContentValues类 这个类是 一个键值对 是用来存储名值对 它的名一般是String类型 而值都是基本类型 来new 一个参数 用这个参数的put方法将这些个参数放入到数据库中 values put scheduleTypeID scheduleVO getScheduleTypeID 放入日程类型ID values put remindID scheduleVO getRemindID 放入重复类型ID values put scheduleContent scheduleVO getScheduleContent 放入日程正文内容 values put scheduleDate scheduleVO getScheduleDate 放入日程日期信息 最后调用添加方法insert db insert schedule null values 插入信息 另外需要moveToFirst方法来判断是否为空 进行相关的操作 2 查询某一条日程信息 由于我这里的设计是通过对日程的点击来查看当前点击 日期的详细信息 即是根据日程的ID来查看的 android sqlite的查询方法是query方法 它 的查询语句是 db query schedule new String scheduleID scheduleTypeID remindID scheduleContent schedule Date scheduleID new String String valueOf scheduleID null null null 另外还需要的是判断语句 先用cursor moveToFirst 判断 curor 是否为空值 不为 空则就给 cursor 赋值 空着直接 cursor close 来关闭 3 查询所有的日程信息 由于所有日期可能不止一个 所以返回值设为数组形式 查询依旧是用query方法 这里的的where语句相关的就直接设为null值 其他的依旧与查 询一条语句相仿 4 删除日程 这里的删除日程需要将日程及对应日期上的标记一起删除 这样才 可以便于管理 删除使用的语句是delete db delete schedule scheduleID new String String valueOf scheduleID 删除日程信息 db delete scheduletagdate scheduleID new 南京工业大学本科生毕业设计 论文 7 String String valueOf scheduleID 删除日程对应的日期标识信息 5 将日程标志日期保存到数据库中 这里是为了将在日期上标识的信息存储到数 据库中 方法同第一步的保存相仿 只是数据的不一样 而且使用的是数组形式 for int i 0 i dateTagList size i 以for循环的方式进行 dateTag dateTagList get i ContentValues values new ContentValues values put year dateTag getYear 放入年信息 values put month dateTag getMonth 放入月信息 values put day dateTag getDay 放入日信息 values put scheduleID dateTag getScheduleID 翻入日程的ID db insert scheduletagdate null values 插入到表scheduletagdate中 6 只查询出当前日程的日期 这个查询语句是通过当前月的年和月信息来得到日 程标记上的所有信息 这里也是使用query语句进行查询的 只不过改变了里面的查询使 用的参数 所以方法类同于上面所有日程的查询 7 当点击每一个gridview中item时 查询出此日期上所有的日程标记 scheduleID 通过点击后得到对应日期的年月日信息 然后用query方法得到次日程标记的ID 用于后 面得到想到相关的日程信息 query scheduletagdate new String scheduleID year and month and day new String String valueOf year String valueOf month String valueOf day null null null 8 关闭数据库 判断后直接关闭当前数据库 if dbOpenHelper null dbOpenHelper close 4 2 2 任务界面之新增界面 新增界面是通过对日历界面上单一日期的点击来实现跳转的 1 首先为了界面的美观我建了几个带边框的类 这些类是在原有的textview等基本类 的基础上进行美化后形成的 这里一共做了下面的三个实现了画笔效果的类 首先是带下边框的TextView 这里TextView类的基础上用画笔实现了下边框的效果 Paint paint new Paint 实例化一支画笔 paint setColor android graphics Color BLACK 设置所绘制的边框颜色为黑色 canvas drawLine 0 this getHeight 1 this getWidth 1 this getHeight 1 paint 绘制下边框 带边框的EditText 这原本是一个基本的EditText 文本编辑框的类 在这里加上了 第四章 系统详细设计 8 特殊的样式 颜色及边框的圆弧效果 Paint paint new Paint 实例化一支画笔 paint setStrokeWidth 1 设置空心现款 paint setStyle Style STROKE 设置样式 paint setColor android graphics Color GRAY 设置颜色 paint setAntiAlias true 抗锯齿方法 RectF rectF new RectF 2 0 this getWidth 2 this getHeight 2 现在设置相关的参数用于下面的操作 canvas drawRoundRect rectF 8 8 pai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路建设工期确保的技术组织措施
- 数据驱动的酒包装设计与消费者行为分析-洞察及研究
- 果蔬汁浓缩工异常处理考核试卷及答案
- 炼钢工操作考核试卷及答案
- 税务公司发票管理办法
- 药品采购供应管理流程信息化工作推进
- 绿化养护管理质量保证措施
- 市政排水工程质量、安全、成本、进度保障措施
- 给金鱼换水200字15篇范文
- 我喜欢的玩具100作文14篇
- 中级注册安全工程师《法律法规》试题及答案
- 2025年汽车转向系统行业需求分析及创新策略研究报告
- 2025年四川省成都市高新区事业单位招聘考试综合类面试真题模拟试卷
- 2025年秋统编版语文二年级上册全册课件(课标版)
- 七下期末人教版数学试卷
- 2025新疆巴音郭楞州和硕县面向社会招聘社区工作者7人笔试参考题库附答案解析
- 2025年六安市裕安区石婆店镇公开招考村级后备干部8名笔试备考试题及答案解析
- 2025年事业单位考试题库及参考答案
- 2025年公安机关人民警察(基本级)执法资格等级题库及答案
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 八年级下册道德与法治-知识清单
评论
0/150
提交评论