当前位置:文档之家› 基于Android日历及记事功能完整实现

基于Android日历及记事功能完整实现

《移动通信程序设计》课程设计题目基于andriod的记事功能的日历院系专业学生姓名学号二O一四年六月九日目录1概述 (1)2 总体设计 (2)3详细设计 (3)3.1、绘画基础 (5)3.2框架绘画 (6)3.3 核心技术 (11)3.4 触摸事件 (14)3.5 键盘操作 (17)4进行编码: (19)4.1登录 (19)4.2事情记录 (20)4.3 对闹铃的设置 (21)4.4记事列表 (23)4.5 闹铃 (25)4.6 对记事的编辑 (26)5 结束语 (27)6参考文献 (27)实现基于Android 的日历及记事功能系统摘要: Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。

在美国乃至世界的很多地方的出货量已经超越Iphone,成为世界上最大智能手机操作系统。

因此,世界各地的程序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。

在此给出一个基于Android 的日历系统的完整实现过程。

关键词: Android;日历;记录;提醒1概述在日常工作中,特别强调时间的重要性,需要完成的事情也越来越多,因此对日历的需求也是巨大的,由于在日常生活中我们不可能将随身携带,我们可以将软件做到移动终端,在此情形下,基于andriod的技术带有记事功能的日历就诞生。

要实现的日历除了常规的日历功能外,还可以显示与当前日期相关的信息,如今天是今年的第几周等等。

效果如图1、图2 所示。

图1 在手机上所显示的日历图标图2 日历的主界面2 总体设计对于andriod的开发的日历的应该一开始显示日历,然后登陆,进行记事,主要流程图如下:3详细设计3.1、绘画基础由于实现的日历系统要涉及文本技术,因此,要简单介绍Android 的文本技术。

通常在Android.view.View 或其子类的onDraw 方法中进行。

该方法的定义如下:protected void onDraw(Canvas canvas);其中Canvas 对象提供了大量用于绘图的方法,这些方法主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成复杂图形的基本元素。

如果要画更复杂的图形,可以采用组合这些图形基本元素的方式来完成,下面来看一下文本基本方法。

绘制text 指定的文本方法是:public native void drawText (String text, float x, float y, Paintpaint);绘制text 指定的文本。

文本中的每一个字符的起始坐标由pos 数组中的值决定方法是:public void drawPosText(String text, float[] pos, Paint paint);绘制text 指定的文本。

text 中的每一个字符的起始坐标由pos 数组中的值决定。

并且可以选择text 中的某一段连续的字符绘制的方法是:public void drawPosText(char[] text, int index, int count, float[] pos,Paint paint);参数的含义如下:(1) text: drawText 方法中的text 参数表示要绘制的文本。

drawPostText 方法中的text 虽然也表示要绘制的文本,但每一个字符的坐标需要单独指定。

如果未指定某个字符的坐标,系统会抛出异常。

(2) x:绘制文本的起始点的横坐标。

(3) y:绘制文本的起始点的纵坐标。

(4) index:选定的字符集合在text 数组中的索引。

(5) count:选定的字符集中字符个数。

3.2框架绘画从图2 可以看出,日历的上部是3 行文字,显示了当前日期的相关信息。

下面来看看如何布局显示这些文字的组件。

在日历主界面的上半部需要放置4 个组件, 1 个ImageView组件和3 个TextView 组件。

其中ImageView 组件用于显示左上角的图像。

3 个TextView 组件用于显示当前日期的信息。

由于目前还没有当前日期的信息。

因此,这3 个TextView组件暂时设置了固定的信息。

下面开始在main.xml 文件中设置这4 个组件。

在修改main.xml 文件的内容之前,先复制一个calendar.png 文件,作为日历的logo (修改AndroidManifest.xml 文件中的应用程序图标)。

建立一个Calendar 工程,并编写main.xml 文件。

<?xml version="1.0" encoding="utf-8"?><LinearLay out xmlns:android = "http://schemas.android.com/apk/res/android"android:orientation = "vertical" android:layout_width = "fill_parent"android:layout_height="fill_parent" android:background="@color/calendar_background" >< ! -- android:background = "@drawable/background" --><RelativeLayout android:id = "@ +id/calHeader" android:layout_width="fill_parent"android:layout_height="70dp"><ImageView android:id = "@ +id/ivLogo" android:src="@drawable/calendar_bak"android:layout_width="@dimen/logo_size" android:layout_height="@dimen/logo_size"android:layout_margin="@dimen/margin" /><LinearLayout android:layout_width="fill_parent"android:layout_height = "wrap_content" android:layout_toRightOf="@id/ivLogo"android:layout_marginTop = "@dimen/margin"android:orientation="vertical" ><TextView android:id = "@ +id/tvMsg1" android:layout_width="fill_parent"android:layout_height = "wrap_content"android:textColor="@color/text_color" /><TextView android:id = "@ +id/tvMsg2"android:layout_width="fill_parent"android:layout_height = "wrap_content"android:textColor="@color/text_color" /><TextView android:id = "@ +id/tvMsg3" android:layout_width="fill_parent"android:layout_height = "wrap_content"android:textColor="@color/text_color" /></LinearLayout></RelativeLayout></LinearLayout>下面在Main 类的Oncreate 方法中编写代码装载main.xml:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);LinearLayout mainLayout = (LinearLayout) getLayoutInflater().inflate(yout.main, null);setContentView(mainLayout);// 需要向mainLayout 中加入日历网络}在绘制日历之前,要先介绍一下日历绘制的方法。

虽然从底层技术来看,绘制日历是在onDraw 方法中完成的。

但在本系统中将要绘制的部分分成了很多块。

而这些要绘制的块都需要放在一个叫CalendarView 的类中,代码如下:public class CalendarView extends View{private Activity activity;@Overrideprotected void onDraw(Canvas canvas){}public CalendarView(Activity activity){super(activity);this.activity = activity;}}在编写完CalendarView 类后,需要在Main 类中定义该类的变量,并在onCreate 方法中创建类的对象实例,代码如下:private CalendarView calendarView;calendarView = new CalendarView(this);mainLayout.addView(calendarView);在前面已经介绍过,在本系统中会将要绘制的日历分成若干块,而每一块都需要有同样的接口,以便统一绘制它们。

因此,这些块都要实现一个CalendarElement 接口。

这些要绘制的块包括日历边框、网络、日历头等,而在CalendarElement 接口中有一个draw 方法。

相关主题