版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、* 屮也幣 DATONG UNIVERSITY 一本科毕业论文(设计)题目:基于Android平台的日历与日程提醒学院:物理与电子科学学院班级:2011级 电子本科四班姓名:罗攀指导教师:孙建新 职称:讲师完成日期:2015 年 5月 10 日基于 Android 平台的日历与日程提醒摘要:近些年来,智能技术的兴起给人们带来了极大的便利,尤其是智能 手机的出现,让人们的生活质量变得越来越好。在 iPhone 引导的智能手机潮流 中,基于 Android 系统的智能手机,凭借开源以及低价迅速赢得市场的认可,成 为目前占领市场份额最大的手机系统。 Android 的开源使其不断的更新与创新, 进而
2、让其保持持久的生命力。因此,基于 Android 的手机、平板以及智能家居都 会成为市场的主流, 同样的基于 Android 的手机软件的开发也会成为炙手可热的 行业。本软件就是基于 Android 系统的,开发出一款简单的日历以及日程记录和 闹铃提醒, 适用于各类群体。 本软件很简洁和不捆绑其他繁杂的功能等优点。 在 具体的实现过程中,严格遵循软件开发流程,主要有可行性判断、需求分析、总 体设计、详细设计、代码编写、软件测试等步骤。需要使用的工具有Ecplise、Android 手机一部、电脑与手机驱动线一根。本软件的主要功能界面有,日历显 示界面、所有日程界面、添加日程界面、日程提醒操作。
3、关键词: Android 、Eclipse 、日历概述目前,随着移动客户端的迅猛发展。越来越多的计算机软件也被设计成并 用于移动客户端。在智能手机平台中, Android 作为最具有发展潜力与优势,在 该软件平台的软件开发成为移动端开发的热门。到现在为止, Android 软件的开发日趋成熟。每时每刻都有新产品在各大应 用商店上架, 软件的庞大数量决定了用户选择的多向性, 同类不同款软件的相互 竞争不断加强, 整个市场优胜劣汰。 正因如此, 用户体验成为软件开发是否成功 的关键。首先,我们必须完成最大限度的需求分析。根据调查,目前的大多数日 历软件,例如 365 日历、万年历等等。这样的安装包
4、庞大,功能繁杂。本软件针 对此,只实现日历和日程提醒, 可以查询 19002100年之间某月的日历, 可以在 任意的日期中添加日程并设置提醒,提醒可以是闹铃或者震动方式提醒用户。全球手机市场概况根据 Strategy Analytics 发布的最新数据,今年第三季度, IOS 和 Android 和占全球智能手机 96%的份额。 IOS 占有的份额为 12.3%,而 Android 占有的份 额是83.6%。An droid继续称霸全球智能手机操作系统市场。Win dows Pho ne占 市场份额 3.3%。Strategy Analytics 公司执行主管 Neil Mawston 表示:
5、“目前, Android 对全 球智能手机市场的统治是无法撼动的, 低价的服务和用户友好的软件不断吸引全 球硬件厂商、运营商和消费者。 ”总的来看,全球智能手机出货量比去年同期增长了 27%,达到了 3.024 亿部。 去年第三季度,全球智能手机出货量为 2.529亿部。事实上,智能手机厂商小米 一直在中国和印度大力推进廉价设备。使得亚洲成为智能手机增长的主要地区, 尤其是中国。现有手机软件市场概况随着 3G 技术在中国的普及和 4G 网络的逐步推广,在移动互联网技术的推 动下,手机应用市场将会迎来巨大机遇。 近年来, 各类软件在手机客户端领域发 展。比如,非常有名的社交平台 WeChat、W
6、eibo、Facebook 等都已经有了自己的 客户端软件。还有,手机办公软件也逐渐进入人们的视野,主要有金山推出的 WPS Offic手机版和三星公司的POLRIS Office。音影娱乐播放软件,有暴风影 音、腾讯视频、爱奇艺等等。上述这些成熟的手机客户端软件,证实了 Android 手机操作系统的优越性。1.3本课题的目的、意义本软件旨在为快节奏生活的人群提供一个查看日期以及日程提醒的小助手。 比如,主界面就是当前月份的显示, 每个月的显示由不同的颜色, 星期名称也有 不同的颜色;还有指定某一天查看月份、年份;还有日程添加界面,以黑色为背 景;还有铃声提醒或者震动提醒日程。本软件的开发流
7、程遵循软件工程开发流程,在这个过程中,我们必须从项目 计划开始、经过需求分析、 软件设计、代码编写、系统测试、到最后的运行维护, 我们学习了软件开发的生命周期。本软件的开发,属于 Android 平台软件开发。需要熟悉 Android 的基本架构、 Dalvik 虚拟和学会使用 Android API 。还要涉及到 UI 设计,主要使用 Canvas 绘制基本控件。本软件的界面简洁,便于用户使用。附属功能,都在菜单里面。各个功能有 自己的界面,功能区分清晰。相关技术介绍开发工具及开发环境介绍( 1)Eclipse 是很多程序员们最常使用的开发工具,它具有跨平台、自有集 成的特点。最初主要用于编
8、写 Java 代码,但现在也有一些人通过使用插件让它 成为多语言的开发工具,比如C+ffi Python语言也可以使用Eclipse进行开发。 Eclipse 支持众多插件的安装, 这就使它具有灵活性, 它还拥有一个标准插件集, 其中最有代表性的是 Java Development Kit ,也就是Java开发工具JDK,众所 周知,要使用 Eclipse 编写Java代码,必须安装 JDK 在本设计中,Eclipse 主要用于前台客户端界面的设计和实现,用于前台代码的编制,包括 UI 代码, 获取网络数据,加载网络数据等一系列用户能够直接接触到的界面。(2)在 Eclipse 编译 IDE
9、环境中,需安装 ADT(Android Development Tools)Plug-in, 这是 Android 在 Eclipse 上的开发工具。主要用于 Android 开发 包或者开发工具的升级下载。 另外,还有安装 SDK(Software Development Kit) , 也就是软件开发工具包, 这里面包含了 Android 开发所需要的特定工具类包, 硬 件平台,模拟器等,我们在 Android 开发过程中用到的所有源代码都保存在 SDK 中,我们正是通过SDK来查看那些源代码,它为程序员们提供了库文件和开发工 具。(3)流程设计使用的软件是 PowerDesigner 。A
10、ndroid 相关技术介绍Android 开发架构介绍虽然说 Android 系统是搭载在移动终端设备上的,比如手机、平板等。但它 实际上是建立在 Linux 之上的,该平台自底向上由 Linux 内核层,运行库层,应用程序框架层,应用程序层组成。An droid系统的构建方法是软件叠层(Software Stack),这种构建方法能够保证层和层之间进行分隔,当某一层发生变化时不会 影响其上、下层,因此使整个系统的分层结构具有很低的耦合性图2-1显示了 An droid系统结构:APPI.TCATTOi) FRAMEWiiRKAPPLICATIONSActivity ManagerC indm
11、ii s ManagerPitckn(r Munugcrf Xnriflcjirion k Mnn;iTC Content ProviderCRrsnurM IVliLnagcir)CEEE) (LIBRARIESC HurtsrclingerMeUiir rani workSQI.itcF rceTy pcOpcnGLKSSSIWvbkltANDROID RUNTIMEamcraLIWX KERNEL lihietoothX -Driver J图2-1 An droid系统体系结构图An droid四大组件基本介绍在An droid应用程序开发时,一般需要用到应用程序运行所必须的组件, 我们
12、通过实例化它们来使用,主要有四种类型:Activity :从字面上理解,Activity 是活动的意思。一个Activity 通常就 是一个用户可看到的界面,它可以说是程序与用户交互的窗口, 是An droid组件 中用的最多也最重要的一个组件。从界面上来看,一个 Activity 能够响应窗口 事件,由各类控件、菜单等元素组成。对于开发者而言,必须继承Activity 类才能进行编码,从而实现各种功能,展示不同界面。Service :和Activity 不同,服务没有自己的界面,并且运行在后台,每一 个系统Service都封装有一个完整的功能逻辑,通过Intent与其他组件联系, 来开启服务
13、或关闭服务。Broadcast Receiver :即广播接收者,不执行任何任务,仅仅用于程序不同 组件之间传递信息,它像 Service 一样,也不包括界面。Con te nt Provider :中文名即为内容提供者,它是 An droid中不同应用程序 之间的数据共享的媒介。An droid 界面 Activity 介绍An droid的界面是由一个个继承了Activity父类的Java类组成,只有继承了 Activity的子类才能让用户看到,Activity在被创建,运行,结束,经历了 一系列的生命周期。An droid中提供了 Activity的生命周期方法,它们分别是:on Cre
14、ate( ), on Start( ),on Resume(,on Pause() on Stop( ),on Destroy( ), on Restart()。 当一个Activity开始运行之后,就自动按顺序调用并执行onCreate(卜onStart()、 onResume(方法,当一个Activity被其他的Activity替代掉时,执行onPause() on Stop()方法,当它重新成为当前界面时,系统就会依次执行on Restart()、onStart()、onResume方法。当一个 Activity 被结束掉时,执行 onPause( )onStop(), on Destr
15、oy()。图2-2显示的就是API提供的Activity的生命周期图图2-2 Activity生命周期图系统需求分析3.1 可行性分析(1)技术可行性:要实现本软件的所有设计内容,要求设计人员能够熟练 使用 Eclipse 开发工具。同时还要熟悉 Android 系统的架构和 Android 的基本组 件,还要求设计人员能够熟练掌握 Java 语言。在开始确定研究课题之后,设计 人员就 Android 设计方面进行了学习和研究,并且在大三的课程中已经学习了 Java语言,并能够使用Java语言编写代码,所以技术方面是可行的。(2)经济可行性:要进行本软件的开发,需要具备的硬件条件包括:一台 使
16、用 Windows 7 操作系统的计算机, 一部 Android 手机, 所以在硬件方面条件可 行。软件方面,安装了所需的所有软件,只有 Eclipse。同时,本软件的设计, 是基于研究的目的,不需要经济支持,如果用于商业用途,在获取利益方面,可 以采取收取商家广告费的方式。因此在经济上,本软件可行。(3)操作可行性:本软件在 UI 的设计上做到了和功能模块相结合的方式, 界面设计一目了然,操作简单,在操作可行性方面,该软件可行。功能需求分析(1)主界面不是An droid自带的传统控件组成,而是通过 Can vas绘制 而来的。承载整个界面的是一个矩形边框,颜色是深红色。通过 Canvas
17、切 割成六行七列格子。头部是用来显示当前日期的有关信息的。( 2)在主界面按下菜单键以后, 会有四个功能选项, 分别是今天、搜索、 日程和关于。对应的功能是,回到今天的指定、搜索指定日期、添加修改日 程并设置提醒方式和关于此软件的信息。( 3)在日程列表界面,以黑色作为主要背景, 已有日程以列表形式展现。 按下菜单键会有三个功能选项,分别是添加、修改和删除。这里的日程存储 是以数据库的形式存放。 这里的操作需要使用数据库的增删改查的基本操作 语句。4系统设计4)在添加日程的界面里面, 是一个可以填写标题和内容的界面。 编写完成之后,按下菜单键设置提醒时间,接着点击完成,日程添加以及提醒就 成功
18、了。性能需求分析每一个软件在投入使用之后,作为设计者,需要保证其能够长期、有效、 安全、稳定的运行,因此,我们做出以下的性能要求:(1)实用性原则:要求软件做到实用性,让尽可能多的用户会认为这是一 个适合自己的实用性软件, 并且充分考虑到用户的操作习惯, 设计合理简洁并实 用的界面。(2)安全性原则:要求用户在使用软件过程中,确保不会出现无故崩溃的 情况。无需填写任何个人信息,隐私足以得到保护。(3)易用性原则:要求做到用户使用时能够得心应手,操作简单,指向明 确。(4)界面美观原则:用户与软件直接进行接触的就是界面,所以界面是否 美观决定了用户对该软件的第一印象, 设计一个美观大方的界面是实
19、现软件成功 的第一保证。(5)可升级性原则:软件具有其生命周期的,一个软件的设计完成并且上 线之后并不一定代表着其完成使命, 软件在后期使用过程中, 很可能会出现新的 需求。这时,就需要软件具备良好的可升级性,能够根据需求对软件进行升级。(6)适配性原则:就目前而言,仅手机产品,常见的主流分辨率有: 240 x320, 320 x480, 800 x480, 854x480, 960 x540, 1280 x720;对于不同的分辨率手机,软 件界面应能完全适配, 这就要求软件设计过程中考虑图片使用, 多个界面设计等 问题。对于内存而言,本软件所占内存极小。4.1总体系统设计441总体业务设计0
20、程屮息*本软件在业务上分为三个部分,主要是查看日期、添加日程和设置提醒。 图4-1就是本软件的总体结构图:主界面屛11JL关于昇搜回到I 今I 天* !图4-1总体结构图4.4.2底层实现结构本软件具体实现包括两个方面:表示层和业务层。(1) 表示层,主要用于界面展示,在这一层需要进行UI设计(2)业务层,逻辑功能实现,日期查看,日期指定和日程提醒。 图4-2就是系统的概要设计图:5.1.3检测安装是否正确图4-2概要设计图5 An droid客户端实现5.1环境搭建5.1.1软件准备及安装jdk170_17.exe 。可至U HYPERLINK /javase/downloads/index
21、.jsp /javase/downloads/index.jsp下载adt-bundle-windows-x86_64.zip 。可到 http:/dl.google.eom/android/adt/adt-bundle-windows-x86_64-20140702.zip下载5.1.2配置环境变量变量名:JAVA_HOME变量值:C:Program FilesJavajdk1.7.0_17变量名:CLASSPATH变量值:C:Program FilesJavajdk1.7.0_17lib修改变量PATH添加变量值:;C:Program FilesJavajdk1.7.0_17bin;在ms
22、-dos窗口执行以下命令:1、java -/ersion出面结果如下便是正确C: MisersabcJaua -uevsionjauA uersion *l_7_0_17*E Runtime Enuironnent Java HotSpat 64Bit Server UM java出现如下结果便是正确2、类文件*本并退岀产品回丁C: MJsers ahcjava用芒; Java (-options class ai*gs .,. 1执行类或 jaoa - pt ions 11 = jai* jarf ile ai*gs 卄亠丄宀d执行Jar文件 眞中选项包括-d32-d64server-hat
23、spot-CP或目录和2 ip/Jai*文件的孝 classpath 或白录和 zip/jai :用:分隔的貝垦和ZIP档詞衰 D=value设置系统属性-verbose:clas?!cJni底用详細输岀.-uersion$刖uei*sIon :-? -help 彌苹-ea: -enableassert ion【:packa.按指定的粒度启用断言da t -paclkagename . . . I -c lassname 1disableassei*t ions : Cpackagienavne . ! = 1 禁用具有指定粒度的断言esai enablesys启用系统断言-dsa : -d
24、isdbles j/s temase rt ions禁用系统断言-agent lib:1Xj醫 M SMI译*serverp UHserver UM的同义词【已过时】 认 UH 是 server.shouuersian痢出产怖取不幵继努j re-Aestiletsearch nojrere strictsearch 在版本捜素审包括嚇除用户专用 呃箱选项的帮助13、javac出现如下结果便是正确:的消息、运行的注输出弓给运行时系统顶和文件名兰自R3- J标记 Wcriroir- 耿文件名理程序的选项二置 空的位置理程序的名称乍绕过默汪耗处理程序的位置的乜貫,的莅置 生成类丈件 為性-ff:no
25、ne -Sf: lines * var, source!-nowarn -uerbose -deprecation -c lasspath 路径 -cp 路轻sourcepath 空 boo tc lasspath extdlirs 冃杲; endorseddii*s 目:pi*DC: 110110, onl -process oir Ccr las$2认融锐程十-processorpath 瑶了性: T电目录 -S 目录-inplic it: -encoding -aource俵何反-tAt-jjet uers iorihelp r关键字u值IIIf5.1.4集成开发环境ADT的说明直接解压
26、之前下载好的adt-bundle-windows-x86_64.zip,然后打开eclipse 文件夹,点击运行 eclipse.exe。Niviqi Swuh ProjKt um Winisfcw HflpT. -nT :.厂Q J| Call Al arm jsva.jj Gridjavai | Ma in Java|i Record.dvar J Remind.java 0 Rem I nd Setting java 辽Week-javaimBirnnuarvi iiim mnia nn imTiiaiij man ! ! i nrd :dtJuopan.calendar.dblDBSr
27、viee.javatf: dtuopanxelendarinterfa匚us | J | 匚日I色n d arElem e nt.ja vagen Generated ava FilesAn droi d Mnn if 色 wtwn I lintixml project, properties5.4主要类的代码展示1、CalendarElement接口定义绘制的抽象方法。代码如下:package efaces;import an droid.graphics.Ca nvas;publicin terfaceCale ndarEleme nt public void draw(Canvas ca
28、nvas);2、CalendarParent 类通过实现CalendarElement 接口以获得作为日历内容元 素的功能:通过抽象方法draw方法绘制日历内容元素。再者从资源文件中获取些公共数据。代码如下:public classprotectedprotectedprotectedprotectedprotectedprotectedprotectedCalendarParent implements CalendarElement Activity activity ;View view ;Paint paint = new Paint();float borderMargin ; /
29、日历边框的空白区域尺寸 float weekNameMargin ; / 周名称的空白区域尺寸 float weekNameSize ; / 周名称的字体大小 int sundaySaturdayColor ; / 周末字体颜色public CalendarParent(Activity activity, View view) this . activity= activity;this . view = view;borderMargin = activity.getResources().getDimension(R.dimen. calendar_border_margin ); we
30、ekNameMargin = activity.getResources().getDimension(R.dimen. weekname_margin ); weekNameSize = activity.getResources().getDimension(R.dimen. weekname_size );sundaySaturdayColor = activity.getResources().getColor(R.color. sunday_saturday_color );Overridepublic void draw(Canvas canvas) 3、Calendar 类通过继
31、承自 CalendarParent 类,得到父类中从资源文件读取的 数据,同时还需实现抽象方法 draw 。代码如下:public class Calendar extends CalendarParent private ArrayList elements = new ArrayList();public Grid grid;public Calendar(Activity activity, View view) super(activity, view);elements.add(new Border(activity, view); elements.add(new Week(act
32、ivity, view);grid = new Grid(activity, view); elements.add(grid);Overridepublic void draw(Canvas canvas) for (CalendarElement ce : elements) ce.draw(canvas);4、Border 类用来绘制日子边框。代码如下: public class Border extends CalendarParent public Border(Activity activity, View view) super(activity, view); paint.se
33、tColor(activity.getResources().getColor(R.color.bor der_color);Overridepublic void draw(Canvas canvas) float left = borderMargin;float top = borderMargin;float right = view.getMeasuredWidth() - left;float bottom = view.getMeasuredHeight() - top; canvas.drawLine(left, top, right, top, paint); canvas.
34、drawLine(right, top, right, bottom, paint); canvas.drawLine(right, bottom, left, bottom, paint); canvas.drawLine(left, bottom, left, top, paint); 5、Week类用来绘制周名称。代码如下: public class Week extends CalendarParent private String weekNames; private int weekNameColor; public Week(Activity activity, View vie
35、w) super(activity, view); weekNameColor = activity.getResources().getColor(R.color.weekname_color);weekNames = activity.getResources().getStringArray(R.array.week_name);paint.setTextSize(weekNameSize);Overridepublic void draw(Canvas canvas) float left = borderMargin;float top = borderMargin;float ev
36、eryWeekWidth = (view.getMeasuredWidth() - borderMargin * 2) / 7;float everyWeekHeight = everyWeekWidth;paint.setFakeBoldText(true);for (int i = 0; i weekNames.length; i+) if (i = 0 | i = weekNames.length - 1) paint.setColor(sundaySaturdayColor);elsepaint.setColor(weekNameColor);left = borderMargin +
37、 everyWeekWidth * i+ (everyWeekWidth -pain t.measureText(weekNamesi) / 2;canvas.drawText(weekNamesi, left, top +pai nt.getTextSize()+ weekNameMargi n, pain t);6 Grid类用来绘制日历的主题部分:日期和网格。获取数据在构造方法中,绘 制日历元素在draw方法中,更新日历表头在updateMsg方法中,生成当月显示 文字在calculateDays方法中,获得当前月份有记录的日期信息在getRecordDays中。主要代码如下:Overr
38、idepublic void draw(Canvas canvas) left = borderMarg in ;top = borderMargin + weekNameSize + weekNameMargin * 2 + 4; float calendarWidth =view .getMeasuredWidth() - left * 2;float calendarHeight = view .getMeasuredHeight() - top - borderMarg in ;float cellWidth = cale ndarWidth / 7;float cellHeight
39、= cale ndarHeight / 6; paint .setColor( innerGridColor );canvas.drawLine(left , top , left + view .getMeasuredWidth()-borderMargin* 2, top , paint );/画横线for ( int i = 1; i 6; i+) canvas.drawLine(left , top + (cellHeight) * i,left +calendarWidth, top + (cellHeight) * i,paint );/画竖线for ( int i = 1; i
40、7; i+) canvas.drawLine(left + cellWidth * i,top , left +cellWidth * i, view .getMeasuredHeight() -borderMargin , paint );/画日期 calculateDays();getl nsta nee();DATE;YEAR, myMon th = cale ndarYEAR,cale ndar.get(cale ndarDAY_OF_WFEKjava.util.Cale ndarcale ndar=java.util.Cale day = calendar.get(
41、calendar. int myYear = cale ndar.get(cale ndar.get(cale ndar. MONTH cale ndar.set(cale ndar.get(cale ndar.MONTH1);int week = calendar.get(calendar. int today In dex = week + day - 2;boolean today = false ;if ( currentDayIndex = -1) currentDayIndex = todayIndex;boolean flag = false ;getRecordDays();f
42、or ( int i = 0; i 20) currentMonth +; if ( currentMonth = 12) currentMonth = 0; currentYear +;view .invalidate();/ 上月 else currentMonth -;if ( currentMonth = -1) currentMonth = 11; currentYear -; view .invalidate(); currentDay = Integer. parseInt currentDay1 = currentDay ; cellX = -1; cellY = -1; br
43、eak ; else flag = true ;Bitmap bitmap = BitmapFactory.activity .getResources(),Rect src = new Rect();src. left = 0;src. top = 0;src. right = bitmap.getWidth(); src. bottom = bitmap.getHeight(); canvas.drawBitmap(bitmap, src, dst, paint .setColor( currentDayColor currentCol = col;currentRow = row;cur
44、rentDay = Integer. parseInt currentDay1 = currentDay ; updateMsg(today);decodeResource (R.drawable. day);paint ););(text);paint .setTextSize( currentDaySize ); canvas.drawText(myText, textLeft, textTop, paint );7、CalendarView 类用来处理日历的点击和触摸事件,然后通过 draw 方法更新 日历。代码如下:public class CalendarView extends V
45、iew public Calendar ce;Overrideprotected void onDraw(Canvas canvas) ce.draw(canvas);/ 绘制日历内容 public CalendarView(Activity activity) super(activity);ce = new Calendar(activity, this);/创建 Calendar 对象/ 触摸事件Overridepublic boolean onTouchEvent(MotionEvent motion) ce.grid.setCellX(motion.getX();/获得当前触摸的横坐
46、标ce.grid.setCellY(motion.getY();/获得当前触摸的纵坐标if (ce.grid.inBoundary() this.invalidate();/ 重新绘制日历return super.onTouchEvent(motion);/ 按键事件Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) switch (keyCode) case KeyEvent.KEYCODE_DPAD_UP: / 向上按键,日期上移 ce.grid.setCurrentRow(ce.grid.getCurrentRow(
47、) - 1); break;case KeyEvent.KEYCODE_DPAD_DOWN:/ 向下按键,日期下移 ce.grid.setCurrentRow(ce.grid.getCurrentRow() + 1); break;case KeyEvent.KEYCODE_DPAD_LEFT:/ 向左按键,日期左移 ce.grid.setCurrentCol(ce.grid.getCurrentCol() - 1); break;case KeyEvent.KEYCODE_DPAD_RIGHT:/ 向右按键,日期右移ce.grid.setCurrentCol(ce.grid.getCurre
48、ntCol() + 1);break;return true;8、菜单选项中切换到今天,代码如下:public boolean onMenultemClick(Menultem item) ();Cale ndar cale ndar = Cale ndar.get In sta neecale ndarView cale ndar.get(Cale ndar.ce. grid . currentYear YEAR;cale ndarView cale ndar.get(Cale ndar.cale ndarView cale ndar.get(Cale ndar.cale ndarView.
49、ce. grid . currentMonthMONTH.ce. grid . currentDay =DATE;.in validate。;return true ;9、菜单选项中指定日期,代码如下:public boolean onMenultemClick(Menultem item) builder = new AlertDialog.Builder(activity );builder .setTitle( 指定日期”); myDateLayout = (Lin earLayout)getLayoutl nflater().i nflate(R.layout. mydate , nu
50、ll );dpSelectDate = (DatePicker) myDateLayout.fin dViewByld(R.id.dpSelectDate );tvDate = (TextView)myDateLayout .findViewByld(R.id. tvDate );tvL un arDate = (TextView)myDateLayout.fin dViewByld(R.id.tvLu narDate );dpSelectDate .init(calendarView . ce. grid . currentYearce. gridce. gridmyDateLayout )
51、;cale ndarViewcale ndarView builder .setView( builder .setPositiveButt on( builder .setNegativeButt on( builder .setlco n(R.drawable. adMyDate = builder .create(); onDateChanged( dpSelectDate.currentMonth ,.currentDay , this );确定, this );取消, null );zhidi ng );,dpSelectDate .getYear()dpSelectDate .ge
52、tMo nth().dpSelectDate .getDayOfMo nth(); adMyDate .show();return true ;10、AllRecord类主要是通过DBService类读取日程安排,并且添加三个菜单选 项,分别是添加日程、修改日程和删除日程。主要代码如下:protected void onCreate(Bundle savedlnstanceState) super .onCreate(savedInstanceState);year = getlntent().getExtras().getlnt(year);month );day );month = get
53、Intent().getExtras().getInt( day = getIntent().getExtras().getInt(Cursor cursor = Grid. dbService .query( year + - + month + - + day);if ( recordArray = null ) recordArray = new ArrayList();if ( arrayAdapter = null ) arrayAdapter = new ArrayAdapter(this ,android.R.layout. simple_list_item_1 , record
54、Array );elsearrayAdapter .clear();idList .clear();while (cursor.moveToNext() arrayAdapter .add(cursor.getString(1); idList .add(cursor.getInt(0);yyyy 年M月 d 日);SimpleDateFormat sdf =new SimpleDateFormat(java.util.Calendar calendar =java.util.Calendar. getInstance (); calendar.set( year , month , day)
55、; setTitle(sdf.format(calendar.getTime(); setListAdapter( arrayAdapter ); myListActivity = null ;publicmyListActivity = thismiModifyRecord miDeleteRecord 修改/ 查看); 删除记录 );boolean onCreateOptionsMenu(Menu menu) miNewRecord = menu.add(0, 1, 1, 添加记录 );= menu.add(0, 2, 2,= menu.add(0, 4, 4,miNewRecord .s
56、etOnM enuItemClickListener(newOnAddRecordMenuItemClick( this );miModifyRecord .setOnMenuItemClickListener( editRecordMenuItemCl ick );miDeleteRecord .setOnMenuItemClickListener( new OnDeleteRecordMenuItemClick( this );return true ;11、Record 类用来编辑和添加日程。同时又菜单选项,分别是完成和设置提醒 时间。主要代码:protected void onCrea
57、te(Bundle savedInstanceState) super .onCreate(savedInstanceState); setContentView(R.layout. record );etTitle = (EditText) findViewById(R.id. etContent = (EditText) findViewById(R.id. Intent intent = getIntent();edit = intent.getBooleanExtra(ifIIeditetTitle );etContent );, false );( edit ) id = inten
58、t.getIntExtra( index = intent.getIntExtra( Cursor cursor = Grid.(cursor.moveToLast() idIIif, 0);index, -1); dbService .query( id );IIIIetTitle .setText(cursor.getString(0); etContent .setText(cursor.getString(1);shake = Boolean. parseBoolean (cursor.getString(2); ring = Boolean. parseBoolean (cursor
59、.getString(3);public boolean onMenuItemClick(MenuItem item) AlertDialog.Builder builder;builder = new AlertDialog.Builder( activity ); builder.setTitle( 设置提醒时间 );LinearLayout remindSettingLayout = (LinearLayout) getLayoutInflater().inflate(R.layout. remindsetting , null ); tpRemindTime = (TimePicker
60、) remindSettingLayout tpRemindTime );.findViewById(R.id.cbShake = (CheckBox) remindSettingLayout.findViewById(R.id.cbRing = (CheckBox) remindSettingLayout.findViewById(R.id.cbShake .setChecked( shake ); cbRing .setChecked( ring ); tpRemindTime .setIs24HourView( if ( remindTime != null ) tpRemindTime
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 17770-2025集装箱空/陆/水(联运)通用集装箱技术要求和试验方法
- 新能源专业就业前景怎么样
- 安全工作管理平台讲解
- 新型医患关系研究文献
- 全区村级财务培训课件
- 人工智能服务器搭建
- 光山县校车安全培训会课件
- 光伏运维人员培训课件
- 普查员兼职考试题及答案
- 楼兰大学考试题目及答案
- 2025广东深圳市光明区事业单位选聘博士20人笔试备考试题及答案解析
- 【新】国开2024年秋《经济法学》1234形考任务答案
- 2026年及未来5年市场数据中国钓具市场竞争策略及行业投资潜力预测报告
- 2026届甘肃省兰州市一中生物高一第一学期期末检测模拟试题含解析
- 托福真题试卷含答案(2025年)
- (2025)70周岁以上老年人换长久驾照三力测试题库(含参考答案)
- 2025辽宁葫芦岛市总工会招聘工会社会工作者5人笔试考试参考题库及答案解析
- 2026年湖南汽车工程职业学院单招职业技能考试题库及参考答案详解
- 农光互补项目可行性研究报告
- 印刷消防应急预案(3篇)
- 高校桶装水合同范本
评论
0/150
提交评论