Android日历完整实现

Android日历完整实现
Android日历完整实现

实用第一智慧密集

2011. 05

实现基于Android 的日历系统

摘要: Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。在美国乃至世界

的很多地方的出货量已经超越Iphone,成为世界上最大智能手机操作系统。因此,世界各地的程

序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。在此给出一个

基于Android 的日历系统的完整实现过程。

关键词: Android;日历;绘画;农历;记录;提醒

1 引言

要实现的日历除了常规的日历功能外,还可以显示与当前

日期相关的信息,如当前日期的农历日期、天干地支、节日等

信息。下面先看看日历的绚丽界面,如图1、图2 所示。

主要功能

2 绘画基础

由于实现的日历系统要涉及到大量的Android 绘图技术,

因此,要简单介绍Android 的绘图技术。

绘制图形通常在Android.view.View 或其子类的onDraw 方

法中进行。该方法的定义如下:

protected void onDraw(Canvas canvas);

其中Canvas 对象提供了大量用于绘图的方法,这些方法

主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成

复杂图形的基本元素。如果要画更复杂的图形,可以采用组合

这些图形基本元素的方式来完成。例如,可以采用画3 条直线

的方式来画三角形。下面来看一下绘制图形基本元素的方法。

2.1 绘制像素点

public native void drawPoint(float x, float y, Paint paint);

// 画一个像素点

public native void drawPoints(float[] pts, int offset, int count, Paint paint); // 画多个像素点

public void drawPoints(float[] pts, Paint paint);

// 画多个像素点

参数的含义如下:

(1) x:像素点的横坐标。

(2) y:像素点的纵坐标。

(3) paint:描述像素点属性的Paint 对象。可设置像素点

的大小、颜色等属性。绘制其他图形元素的Paint 对象与绘制

像素点的Paint 对象的含义相同。在绘制具体的图形元素时可

根据实际的情况设置Paint 对象。

(4) pts: drawPoints 方法可一次性画多个像素点。pts 参数

表示多个像素点的坐标。该数组元素必须是偶数个,两个一组

为一个像素点的坐标。

(5) offset: drawPoints 方法可以取pts 数组中的一部分连

续元素作为像素点的坐标,因此,需要通过offset 参数来指定

取得数组中连续元素的第一个元素的位置,也就是元素偏移

量,从0 开始。例如,要从第3 个元素开始取数组元素,那么

offset 参数值就是2。

(6) count:要获得的数组元素个数, count 必须为偶数

(两个数组元素为一个像素点的坐标)。

要注意的是, offset 可以从任意一个元素开始取值,例如,

offset 可以为1,然后count 为4。

2.2 绘制直线

public void drawL ine (float startX, float startY, float stopX, float stopY,Paint paint);// 画一条直线

public native void drawLines(float[] pts, int offset, int count, Paint paint); // 画多条直线

public void drawLines(float[] pts, Paint paint);

// 画多条直线

参数的含义如下:

(1) startX:直线开始端点的横坐标。

(2) startY:直线开始端点的纵坐标。

(3) stopX:直线结束端点的横坐标。

(4) stopY:直线结束端点的纵坐标。

(5) pts:绘制多条直线时的端点坐标集合。4 个数组元素

(两个为开始端点的坐标,两个为结束端点的坐标)为1 组,

表示一条直线。例如,画两条直线, pts 数组就应该有8 个元

素。前4 个数组元素为第1 条直线两个端点的坐标,后4 个数

组元素为第2 条直线的两个端点的坐标。

(6) offset: pts 数组中元素的偏移量。

(7) count:取得pts 数组中元素的个数。该参数值需为4

的整数倍。

2.3 绘制圆形

public void drawCircle (float cx, float cy, float radius, Paint paint);

参数的含义如下:

(1) cx:圆心的横坐标。

(2) cy:圆心的纵坐标。

(3) radius:圆的半径。

2.4 绘制弧

public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint);

参数的含义如下:

(1) oval:弧的外切矩形的坐标。需要设置该矩形的左上

角和右下角的坐标,也就是oval.left、oval.top、oval.right 和

oval.bottom。

(2) startAngle:弧的起始角度。

(3) sweepAngle:弧的结束角度。如果sweepAngle - startAngle

的值大于等于360, drawArc 画的就是一个圆或椭圆(如

果oval 指定的坐标画出来的是长方形, drawArc 画的就是椭圆)。

(4) useCenter:如果该参数值为true,在画弧时弧的两个端

点会连接圆心。如果该参数值为false,则只会画弧。效果如图3

所示。前两个弧未设置填充状态,后两个弧设置了填充状态。

2.5 绘制文本

// 绘制text 指定的文本

public native void drawText (String text, float x, float y, Paint paint);

// 绘制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 绘制日历的框架

从图1 可以看出,日历的上部是3 行文字,显示了当前日

期的相关信息。下面来看看如何布局显示这些文字的组件。

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

组件和3 个TextView 组件。其中ImageView 组件用于

显示左上角的图像。3 个TextView 组件用于显示当前日期的信

息。由于目前还没有当前日期的信息。因此,这3 个TextView

组件暂时设置了固定的信息。

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

main.xml 文件的内容之前,先复制一个calendar.png 文件,作

为日历的logo (修改AndroidManifest.xml 文件中的应用程序图标)。建立一个Calendar 工程,并编写main.xml 文件。

android:orientation = "vertical" android:layout_width = "

fill_parent"

android:layout_height="fill_parent" android:background="

@color/calendar_background" >< ! -- android:background = "

@drawable/background" -->

android:layout_height="70dp">

src="@drawable/calendar_bak"

android:layout_width="@dimen/logo_size" android:

layout_height="@dimen/logo_size"

android:layout_margin="@dimen/margin" />

android:layout_height = "wrap_content" android:

layout_toRightOf="@id/ivLogo"

android:layout_marginTop = "@dimen/margin"

android:orientation="vertical" >

layout_width="fill_parent"

android:layout_height = "wrap_content"

android:textColor="@color/text_color" />

android:layout_width="fill_parent"

android:layout_height = "wrap_content"

android:textColor="@color/text_color" />

layout_width="fill_parent"

android:layout_height = "wrap_content"

android:textColor="@color/text_color" />

下面在Main 类的Oncreate 方法中编写代码装载main.xml:

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

LinearLayout mainLayout = (LinearLayout) getLayoutInflater().

inflate(https://www.360docs.net/doc/113765369.html,yout.main, null);

setContentView(mainLayout);

// 需要向mainLayout 中加入日历网络

}

在绘制日历之前,要先介绍一下日历绘制的方法。虽然从

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

系统中将要绘制的部分分成了很多块。而这些要绘制的块都需

要放在一个叫CalendarView 的类中,代码如下:

public class CalendarView extends View

{

private Activity activity;

@Override

protected 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 方法。在绘制日历元素时只

需调用draw 方法即可。在后面的实现中会看到更多实现CalendarElement 接口的类,下面先来编写CalendarElement 接口。

package project.calendar.interfaces;

import android.graphics.Canvas;

public interface CalendarElement

{

public void draw(Canvas canvas);

}

package project.calendar.interfaces;

import android.graphics.Canvas;

public interface CalendarElement

{

public void draw(Canvas canvas);

}

现在需要一个总的类来绘制上述的这些块。这个功能由

Calendar 类来完成。Calendar 是一个总的日历元素类,在该类的draw 方法中绘制了所有的日历元素。Calendar 是第一个实现CalendarElement 接口的类,代码如下:

public class Calendar extends CalendarParent

{

// elements 用于保存多功能日历中所有的日历元素

private ArrayList elements = new ArrayList();

public Calendar(Activity activity, View view)

{

super(activity, view);

}

@Override

public void draw(Canvas canvas)

{

// 在draw 方法中通过扫描elements 变量来获得所

//有日历元素的对象,并调用draw 方法绘制这些日历元素

for (CalendarElement ce : elements)

ce.draw(canvas);

}

}

在CalendarView 类中需要调用Calendar 类来绘制日历,因

此,需要在CalendarView 类中创建Calendar 类的对象实例,并调用draw 进行绘制,代码如下:

public Calendar ce;

@Override

protected void onDraw(Canvas canvas)

{

ce.draw(canvas);

}

public CalendarView(Activity activity)

{

ce = new Calendar(activity, this);

}

下面编写第一个绘制元素类: Border。Border 类用于绘制

日历的边框,该类是日历元素类,需要实现CalendarElement

接口,不过该类只要继承刚实现的CalendarParent 类即可。public class Border extends CalendarParent

{

public Border(Activity activity, View view)

{

super(activity, view);

// 注意,一定要4 个字节的颜色值,包括一个透明色

paint.setColor(0xFFFFFFFF);

}

@Override

public 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.drawLine(right, top, right, bottom, paint);

canvas.drawLine(right, bottom, left, bottom, paint);

canvas.drawLine(left, bottom, left, top, paint);

Log.d("draw",String.valueOf(right));

}

}

Grid 类用于绘制日历的网格,该类是日历元素类,需要继

承CalendarParent 类。

public class Grid extends CalendarParent

{

private float top, left;

@Override

public void draw(Canvas canvas)

{

left = borderMargin;

top = borderMargin + weekNameSize + weekNameMargin *

2 + 4;

float calendarWidth = view.getMeasuredWidth() - left * 2;

float calendarHeight = view.getMeasuredHeight () - top - borderMargin;

float cellWidth = calendarWidth / 7;

float cellHeight = calendarHeight / 6;

paint.setColor(0xFFFFFFFF);

canvas.drawLine(left, top, left + view.getMeasuredWidth()

- borderMargin * 2, top, paint);

paint.setColor(0xFF666666);

// 画横线

for (int i = 1; i < 6; i++)

{

canvas.drawLine (left, top + (cellHeight) * i, left + calendar- Width,

top + (cellHeight) * i, paint);

}

// 画竖线

for (int i = 1; i < 7; i++)

{

canvas.drawLine(left + cellWidth * i, top, left + cellWidth * i, view.getMeasuredHeight() - borderMargin, paint);

}}

public Grid(Activity activity, View view)

{

super(activity, view);

// TODO Auto-generated constructor stub

}}

Week 类用于显示日历网格上方的星期文本:

public class Week extends CalendarParent

{

private String[] weekNames = new String[]

{ "日", "一", "二", "三", "四", "五", "六" };

private int weekNameColor;

public Week(Activity activity, View view)

{

super(activity, view);

weekNameColor = Color.WHITE;

paint.setTextSize(weekNameSize);

}

@Override

public void draw(Canvas canvas)

{

float left = borderMargin;

float top = borderMargin;

float everyWeekWidth = (view.getMeasuredWidth () - borderMargin * 2) / 7;

paint.setFakeBoldText(true);

for (int i = 0; i < weekNames.length; i++)

{

if (i == 0 || i == weekNames.length - 1)

paint.setColor(sundaySaturdayColor);

else

paint.setColor(weekNameColor);

left = borderMargin + everyWeekWidth * i

+ (everyWeekWidth - paint.measureText (weekNames [i])) /

2;

canvas.drawText(weekNames[i], left, top + paint.getTextSize

()+

weekNameMargin, paint);

}}}

4 核心技术

前面介绍了绘制日历的基本方法,现在将逐步接触到日历

系统的核心技术。首先来看一下日历中如何表示日期。

在Grid 类中的days 数组保存了42 个数字。这42 个数字

就是日历主界面中的6*7 个方格中的数字。这些数字分为两部

分,中间的部分就是当前月中的天数。这些天数最小是28 天,

最大是31 天。在这组数字的前后可以包含了上月的部分月末

天数和下月部分月初天数。当单击或触摸上月或下月的天数

时,日历会跳到上月或下月。这里内容在后面将详细介绍。只

介绍如何将这些数字绘制到这42 个方格中。为了区别这两类

数字。将在上月和下月的相应天数中加星号(*),代码如下:private String[] days = new String[42];

public int currentYear, currentMonth;

public int currentDay = -1, currentDay1 = -1, currentDayIndex = -1;

private java.util.Calendar calendar = java.util.Calendar. getInstance();

在Grid 类的构造方法中初始化变量的代码如下:

currentYear = calendar.get(calendar.YEAR);

currentMonth = calendar.get(calendar.MONTH);

下面来编写一个getMonthDays 方法,该方法用来获得指定

月份的天数。这个方法也是绘制指定月份的日历的基础,代码

如下:

private int getMonthDays(int year, int month)

{

month++;

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

{

return 31;

}

case 4:

case 6:

case 9:

case 11:

return 30;

}

case 2:

{

if (((year % 4 == 0) && (year % 100 ! = 0)) || (year %

400 == 0))

return 29;

else

return 28;

}}

return 0;

}

下面到了关键时刻,需要基础出当前月的天数,以及上一

月和下一月落在本月初和本月末的天数。并将其放在days 数

组中。代码如下:

private void calculateDays()

{

// 将当前日历设为指定月份的第一天

calendar.set(currentYear, currentMonth, 1);

// 获得指定月份的第1 天是当前周的第几天

int week = calendar.get(calendar.DAY_OF_WEEK);

int monthDays = 0;

int prevMonthDays = 0;

// 获得当前月有多少天

monthDays = getMonthDays(currentYear, currentMonth);

// 如果当前月是一年中的第一个月,则获得上一年最后一月

//(也就是12 月)的天数

if (currentMonth == 0)

prevMonthDays = getMonthDays(currentYear - 1, 11);

// 否则,获得指定月上一月的天数

else

prevMonthDays = getMonthDays (currentYear, current-

Month - 1);

for (int i = week, day = prevMonthDays; i > 1; i--, day--) {

days[i - 2] = "*" + String.valueOf(day);

}

// 设置指定月(在这里是当前月)的天数

for (int day = 1, i = week - 1; day <= monthDays; day++, i++)

{

days[i] = String.valueOf(day);

if (day == currentDay)

// 获得当前日在days 数组中的索引

currentDayIndex = i;

}}

// 设置下一月显示在本月日历后面的天数

for (int i = week + monthDays - 1, day = 1; i < days.length;

i++, day++)

{

days[i] = "*" + String.valueOf(day);

}}

下面的代码是本例中最核心的部分,在onDraw 方法中绘

制日历的主界面,代码如下:

// 填充days 数组

calculateDays();

java.util.Calendar calendar = java.util.Calendar.getInstance(); int day = calendar.get(calendar.DATE);

int myYear = calendar.get(calendar.YEAR),

Int myMonth = calendar.get(calendar.MONTH);

calendar.set(myYear, myMonth,1);

int week = calendar.get(calendar.DAY_OF_WEEK);

boolean flag = false;

在ondraw 方法中添加绘制日历的代码(2):

for (int i = 0; i < days.length; i++)

{

today = false;

int row = i / 7;

int col = i % 7;

String text = String.valueOf(days[i]);

// 如果日历是周日、周六,并且是上一月和下一月的周六和周

//日

if ((i % 7 == 0 || (i - 6) % 7 == 0) && text.startsWith("*")) {

paint.setColor(0xFF990000);

}

else if (i % 7 == 0 || (i - 6) % 7 == 0)

{

paint.setColor(sundaySaturdayColor);

}

else if (text.startsWith("*")) // 非周六周日,但为上一月的日期{

paint.setColor(0xFF999999);

}

else

{

paint.setColor(0xFFFFFFFF); // 普通日历

}

// 去掉上月一下月日期前的星号

text = text.startsWith("*") ? text.substring(1) : text; paint.setTextSize(15);

float textLeft = left + cellWidth * col

+ (cellWidth - paint.measureText(text)) / 2;

float textTop = top + cellHeight * row

+ (cellHeight - paint.getTextSize()) / 2 + 11;

// 绘制方格中的文字

canvas.drawText(text, textLeft, textTop, paint);

}

// 会战表示当前日历的图像

if (myYear == currentYear && myMonth == currentMonth

&& i == todayIndex)

{

paint.setColor(Color.RED);

Bitmap bitmap = BitmapFactory.decodeResource(activity .getResources(), R.drawable.day);

Rect src = new Rect();

src.left = 0;

src.top = 0;

src.right = bitmap.getWidth();

src.bottom = bitmap.getHeight();

Rect dst = new Rect();

dst.left = (int) (left + cellWidth * col);

dst.top = (int) (top + cellHeight * row);

dst.bottom = (int) (dst.top + cellHeight + 1);

dst.right = (int) (dst.left + cellWidth + 1);

// 绘制表示当前日期的图像

canvas.drawBitmap(bitmap, src, dst, paint);

}

5 触摸事件

现在为日历添加一系列动画。首先需要添加的是日历的触

摸事件。由于所实现的日历都是通过绘制完成的,因此,在触摸时必须要判断触摸的位置,以确定触摸的是日历的哪一部分。例如,触摸的是哪一天。

下面来看看如何为日历添加触摸事件。

首先添加两个变量,用于保存当前触摸的坐标。默认值都

是-1,表示用户还未触摸:

private float cellX = -1, cellY = -1;

再加两个setter 方法用来设置这个值:

public void setCellX(float cellX)

{

this.cellX = cellX;

}

public void setCellY(float cellY)

{

this.cellY = cellY;

}

下面来编写一个isBoundary 方法,用来判断用户是否触摸了非日历网络部分。

public boolean inBoundary()

{

// 判断边界

if (cellX < borderMargin

|| cellX > (view.getMeasuredWidth() - borderMargin) || cellY < top

|| cellY > (view.getMeasuredHeight() - borderMargin)) {

return false;

}

else

{

return true;

}}

下面在CalendarView 类中添加一个触摸事件方法

public boolean onTouchEvent(MotionEvent motion)

{

ce.grid.setCellX(motion.getX());

ce.grid.setCellY(motion.getY());

if (ce.grid.inBoundary())

{

this.invalidate();

}

return super.onTouchEvent(motion);

}

现在来修改Grid 类,在该类中需要获得农历信息,这是

一个现成的类库(在文中提供的源代码中可以找到, Lunar 类),可以直接使用。

private Lunar lunar = new Lunar();

private int today;

// 保存月的名称(一至十二月)

private String[] monthNames = new String[12];

private TextView tvMsg1;

private TextView tvMsg2;

private TextView tvMsg3;

由于系统中需要使用月份信息,因此,需要在res\values

目录中建立一个values.xml 文件,并输入要用到的月份信息。

一月

二月

三月

四月

五月

六月

七月

八月

九月

十月

十一月

十二月

下面继续修改Grid 类,在构造方法中添加如下代码:

today = currentDay;

tvMsg1 = (TextView) activity.findViewById(https://www.360docs.net/doc/113765369.html,Msg1); tvMsg2 = (TextView) activity.findViewById(https://www.360docs.net/doc/113765369.html,Msg2); tvMsg3 = (TextView) activity.findViewById(https://www.360docs.net/doc/113765369.html,Msg3); // 装载刚才定义的资源

monthNames = activity.getResources().getStringArray(R. array.month_name);

在切换到相应的日期后,需要在屏幕的正上方显示当前日

期的信息。显示的内容如图1 所示。这些功能由updateMsg 方法实现,代码如下:

private void updateMsg(boolean today)

{

String monthName = monthNames[currentMonth];

String dateString = "";

SimpleDateFormat sdf = new SimpleDateFormat ("yyyy

年m 月d 日");

java.util.Calendar calendar = java.util.Calendar. getInstance();

calendar.set(currentYear, currentMonth, currentDay); dateString = sdf.format(calendar.getTime());

String lunarStr = "";

lunar.setDate(calendar.getTime());

lunarStr = lunar.getAnimalString() + "年(";

lunarStr += lunar.getCyclicaYear() + "年)";

lunarStr += lunar.getLunarMonthString() + "月";

lunarStr += lunar.getLunarDayString();

String term = lunar.getTermString();

if (! "".equals(term))

term += " ";

monthName += " 本月第" + calendar.get(java.util.Calendar. WEEK_OF_MONTH)

+ "周";

tvMsg1.setText(monthName);

if (today)

dateString += "(今天)";

dateString += " 本年第" + calendar.get(java.util.Calendar. WEEK_OF_YEAR)

+ "周";

tvMsg2.setText(dateString);

tvMsg3.setText(term + lunarStr);

}

6 键盘操作

介绍如何通过手机按键来操作日历,也就是通过按建来移

动日历。另外一个功能是当日历移动到上月或下月的日期时切

换到上月或下月的日历。

下面看看如何通过按键来操作日历,首先要在Grid 类中

添加几个变量,用来控制当前的日历坐标。

private int currentRow, currentCol;

private boolean redrawForKeyDown = false;

在使用键盘来控制日历时,当按下手机按键的上、下、

左、右时,会调用setCurrentRow、setCurrentCol 方法来更新当前的坐标(横、纵坐标)。setCurrentRow 方法的代码如下:public void setCurrentRow(int currentRow)

{

redrawForKeyDown = true;

cellX = -1;

cellX = -1;

if (currentRow >= 0 & currentRow < 6)

{

this.currentRow = currentRow;

}

}

setCurrentCol 方法的代码如下:

public void setCurrentCol(int currentCol)

{

redrawForKeyDown = true;

cellX = -1;

cellX = -1;

if (currentCol < 0)

{

if (currentRow > 0)

{

this.currentCol = 6;

setCurrentRow(--currentRow);

}

else

{

this.currentCol = 0;

}}}

else if (currentCol > 6)

{

this.currentCol = 0;

setCurrentRow(++currentRow);

}

else

{

this.currentCol = currentCol;

}

}

最后修改CalendarView 类的代码,加入键盘触摸事件,代

码如下:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

switch (keyCode)

{

case KeyEvent.KEYCODE_DPAD_UP:

{

ce.grid.setCurrentRow(ce.grid.getCurrentRow() - 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.getCurrentCol() + 1);

break;

}}

invalidate();

return true;

}

7 显示当前日期

显示当前日期的详细信息是本系统的主要功能之一。这

个功能也是将Web 技术和Android 相结合的典型案例。下面

来看看是如何来实现这个功能的。首先来看看实现效果,如

图4 所示。

图4 显示当前日期的详细信息

虽然JavaScript 有着丰富的函数库,但仍然有很多无法完

成的工作,例如,对硬件的访问。不过WebView 为JavaScript

提供了一种强有力的扩展,通过这种扩展,可以在JavaScript

中象调用JavaScript 函数一样调用Java 代码。因此, JavaScript

也就拥有了同Java 一样的能力。

通过WebView 组件使JavaScript 调用Java 方法,首先需要

打开WebView 的JavaScript 支持,代码如下:

webSettings.setJavaScriptEnabled(true);

//然后使用addJavascriptInterface 方法添加JavaScript 和Java

//方法的映射。

public void addJavascriptInterface (Object obj, String interfaceName); 建立一个空的OnMsgMenuItemClick,代码如下:

pub lic class OnMsgMenuItemClick implements OnMenu-

ItemClickListener

{

private CalendarView calendarView;

public OnMsgMenuItemClick (CalendarView calendarView)

{

this.calendarView = calendarView;

}

@Override

public boolean onMenuItemClick(MenuItem item)

{

return true;

}

}

下面来编写布局文件msg.xml。

android:orientation = "vertical" android:layout_width = "fill_parent" android:layout_height="fill_parent" android:background="#FFF"

>

图4 显示当前日期的详细信息

android:layout_width = "fill_parent" android:layout_height = "

wrap_content">

android:layout_width="80dp" android:layout_height="80dp" android: layout_marginTop = "8dp" android:layout_marginLeft = "

8dp"/>

android:layout_toRightOf = "@id/ivSXImage" android:layout_

width="80dp"

android:layout_height="80dp" android:layout_margin="10dp" /

>

width="fill_parent"

android:layout_height="fill_parent" />

下面需要使用一个Lunar 类(在前面曾使用过)来获得当

前日期的农历信息,代码如下:

private Lunar lunar = new Lunar();

private java.util.Calendar calendar = java.util.Calendar.

getInstance();

private String dateString, weekString, lunarDate, term, festival, lunarFestival,description;

从图4 看出在上方显示了与当前年相匹配的12 天干。这个

功能需要通过loadAnimal 方法来完成。这个方法要通过Lunar 类的getAnimalString 方法获得当前年的天干,然后通过比较来确定要显示哪正值天干的图像。loadAnimal 方法的代码如下:private void loadAnimal()

{

ImageView ivMsgImage = (ImageView) findViewById(R.

id.ivSXImage);

ImageView ivMsgText = (ImageView) findViewById(R.id. ivSXText);

if ("鼠".equals(lunar.getAnimalString()))

{

ivMsgImage.setImageResource(R.drawable.a01);

ivMsgText.setImageResource(R.drawable.b01);

}

else if ("牛".equals(lunar.getAnimalString()))

{

ivMsgImage.setImageResource(R.drawable.a02);

ivMsgText.setImageResource(R.drawable.b02);

}

else if ("虎".equals(lunar.getAnimalString()))

{

ivMsgImage.setImageResource(R.drawable.a03);

ivMsgText.setImageResource(R.drawable.b03);

}

else if ("兔".equals(lunar.getAnimalString()))

{

ivMsgImage.setImageResource(R.drawable.a04);

ivMsgText.setImageResource(R.drawable.b04);

}

else if ("龙".equals(lunar.getAnimalString()))

{

ivMsgImage.setImageResource(R.drawable.a05);

ivMsgText.setImageResource(R.drawable.b05);

}

else if ("蛇".equals(lunar.getAnimalString()))

{

ivMsgImage.setImageResource(R.drawable.a06);

ivMsgText.setImageResource(R.drawable.b06);

}

else if ("马".equals(lunar.getAnimalString()))

Android日历完整实现

实用第一智慧密集 2011. 05 实现基于Android 的日历系统 摘要: Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。在美国乃至世界 的很多地方的出货量已经超越Iphone,成为世界上最大智能手机操作系统。因此,世界各地的程 序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。在此给出一个 基于Android 的日历系统的完整实现过程。 关键词: Android;日历;绘画;农历;记录;提醒 1 引言 要实现的日历除了常规的日历功能外,还可以显示与当前 日期相关的信息,如当前日期的农历日期、天干地支、节日等 信息。下面先看看日历的绚丽界面,如图1、图2 所示。 主要功能

2 绘画基础 由于实现的日历系统要涉及到大量的Android 绘图技术, 因此,要简单介绍Android 的绘图技术。 绘制图形通常在Android.view.View 或其子类的onDraw 方 法中进行。该方法的定义如下: protected void onDraw(Canvas canvas); 其中Canvas 对象提供了大量用于绘图的方法,这些方法 主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成 复杂图形的基本元素。如果要画更复杂的图形,可以采用组合 这些图形基本元素的方式来完成。例如,可以采用画3 条直线 的方式来画三角形。下面来看一下绘制图形基本元素的方法。 2.1 绘制像素点 public native void drawPoint(float x, float y, Paint paint); // 画一个像素点 public native void drawPoints(float[] pts, int offset, int count, Paint paint); // 画多个像素点 public void drawPoints(float[] pts, Paint paint); // 画多个像素点 参数的含义如下: (1) x:像素点的横坐标。 (2) y:像素点的纵坐标。 (3) paint:描述像素点属性的Paint 对象。可设置像素点 的大小、颜色等属性。绘制其他图形元素的Paint 对象与绘制 像素点的Paint 对象的含义相同。在绘制具体的图形元素时可 根据实际的情况设置Paint 对象。 (4) pts: drawPoints 方法可一次性画多个像素点。pts 参数 表示多个像素点的坐标。该数组元素必须是偶数个,两个一组 为一个像素点的坐标。 (5) offset: drawPoints 方法可以取pts 数组中的一部分连 续元素作为像素点的坐标,因此,需要通过offset 参数来指定 取得数组中连续元素的第一个元素的位置,也就是元素偏移 量,从0 开始。例如,要从第3 个元素开始取数组元素,那么 offset 参数值就是2。 (6) count:要获得的数组元素个数, count 必须为偶数 (两个数组元素为一个像素点的坐标)。 要注意的是, offset 可以从任意一个元素开始取值,例如, offset 可以为1,然后count 为4。

基于android的手机日程管理系统需求规格说明书

需求说明书 一、引言: 1.背景: 手机日程管理系统就是针对当代大学生的日程管理需求,在基于android内核以及架构的基础上,采用自定义控件和用户接口,利用后台服务实施定时提醒、自动删除等技术,实现手机的个人日程管理、课程表管理、定时提醒删除、安全设置等多种功能。 2.编写目的: 当下大学生生活作息时间紊乱,社团活动、社交和游戏等搞的众多大学生毫无时间观念,重要的事情和约会等被打乱。在这种情况下,本手机日程管理系统的开发显得很有意义,帮你管理平时安排,提醒你的重要时间和约会。 二、系统特性: 1.系统角色 用户: 用户 设置日程 设置今日安排 查看课程表 查看日历 设置功能图1 用户用例图 2.数据管理 (1)用户添加课程表数据 使用者:用户 目的:添加课程表信息 基本事件流: 1、用户从主界面进入课程表添加界面 2、用户点击添加按钮跳转输入信息界面,输入信息,点击确认按钮提交数据库

(2)用户添加今日安排数据 使用者:用户 目的:添加今日安排信息 基本事件流: 1、用户从主界面进入今日安排界面 2、用户点击添加按钮跳转输入信息界面,输入信息,点击确认按钮提交数据库 3、设置日程标题、地点、是否为重要日程、是否为全天计划、起始时间、结束时间、是否重复设置、是否提醒、提前多长时间提醒等。 (3)用户添加日程安排数据 使用者:用户 目的:添加日程安排信息 基本事件流: 1、用户从主界面进入日程安排界面 2、用户点击添加按钮跳转输入信息界面,输入信息,点击确认按钮提交数据库 3、设置日程标题、地点、是否为重要日程、是否为全天计划、起始时间、结束时间、是否重复设置、是否提醒、提前多长时间提醒等。 3.数据查询 (1)用户查询今日安排数据 使用者:用户 目的:查询今日安排 基本事件流: 1、用户从主界面进入今日安排界面 2、用户即可查看简单的今日日程信息,点击日程标题可查看具体日程信息(2)用户查询课程数据 使用者:用户 目的:查询课程 基本事件流: 1、用户从主界面进入课程界面 2、用户即可查看课程信息,点击课程标题可查看具体信息 (3)用户查询近日安排数据 使用者:用户 目的:查询近日安排 基本事件流: 1、用户从主界面进入日程安排界面

基于Android的日历系统的设计与实现毕业设计(论文)

华北电力大学本科毕业设计(论文) 毕业设计(论文) ` 题目基于Android的日历系统 的设计与实现 二○一四年六月

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

基于android的手机日程管理系统概要设计说明书

基于Android的手机日程管理系统的设计 与实现 概要设计说明书 学生姓名:王炜 学号: 0911******* 指导教师:刘雪梅 课题类型: AXP 专业:软件工程 学部:信息学部 审核组长: 北京城市学院 2013 年 2月 19日

日期版本说明作者2013/2/19 1 未评审的初稿王炜2013/3/3 2 版本内容删改王炜

目录 1引言 (1) 1.1 编写目的 (1) 1.2 背景 (1) 1.3定义 (1) 1.4参考资料 (1) 2总体设计 (2) 2.1需求规定 (2) 2.2 运行环境 (2) 2.3 基本设计概念和处理流程 (2) 2.4结构 (3) 2.4.1 设置课程表 (3) 2.4.2 查看课程表 (3) 2.4.3 新增日程 (4) 2.4.4 查看日程 (4) 2.4.5 查看日历 (4) 2.4.6 设定安全密码 (5) 2.5人工处理过程 (5) 2.6尚未问决的问题 (5) 3 接口设计 (5) 3.1用户接口 (5) 3.2内部接口 (5) 3.2外部接口 (6) 4 运行设计 (7) 4.1运行模块组合 (7) 4.2 运行控制 (7) 4.3 运行时间 (7) 5 系统出错处理设计 (7) 5.1 出错信息 (7) 5.2补救措施 (7) 5.3 系统维护设计 (8)

1引言 1.1 编写目的 编写此文档的目的是:详细、准确和全面地定义基于android的手机日程管理系统的概要设计,以利于指导该系统后续的开发工作;本文档所描述的概要设计作为该项目最终验收的标准和依据;给工作人员提供一定的维护依据,方便在以后的维修工作中提供方便。 文档读者:专业的工作技术人员对维修系统时参考的文档。 1.2 背景 软件名称:基于android的手机日程管理系统 任务提出者:毕业设计审核组 开发者:王炜 用户以及将运行该软件的平台:android手机用户 1.3定义 Broadcast Receiver:在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而Broadcast Receiver是对发送出来的Broadcast 进行过滤接受并响应的一类组件。 My Item Adapter:涉及到对单个条目的是否完成标记以及删除的设置,所以在这里重写了一个适配器My Item Adapter继承Base Adapter,并在get—view() 方法中手动映射数据。 1.4参考资料 [1]赵亮;张维;;基于Android技术的界面设计与研究[J];电脑知识与技术;2009年29期. [2]陈昱;江兰帆;;基于Google Android平台的移动开发研究[J];福建电脑;2008年11期. [3]蔡罗成;;Android后台监听实现机制浅析[J];信息安全与通信保密;2010年06期. [4]王会进,方锦亮;基于JA V A的自定义控件应用技术研究[J];微型机与应用;2005

基于Android平台的日历提醒软件的设计与实现

1 引言 随着移动互联网的高速发展,人们已经无法离开移动终端,智能手机也已经越来越普及,对人们的生活产生了巨大的影响,人们可以随时随地使用手机,随时随地来查看信息,随时随地用来上网等,当然也急需青春地了解到自己每天所需要完成的事情,或是需要记录一些容易忘记的重要事件,并能有一个功能完善的软件来帮助人们完成这些事情。在这样的大背景下,基于安卓平台的日历提醒软件也逐渐进入安卓开发者的视野中。 1.1 课题背景 Android是一种基于Linux平台的开放源代码的操作系统,主要使用在移动终端上。Android操作系统最初由AndyRubin开发,最早的时候主要用在手机平台上。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上[1]。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%[2]。 Android是一种开放源代码的操作系统,随着Android的迅速发展,如今许多开发者运用其他不用的编程语言来编写Android应用程序,如今已经不再是以前那种只允许运用Java语言来开发Android应用程序的单调局面,因此众多开发者更加欢迎Android平台,Android已经成为第一个真正的开放式操作系统。 1.2 研究的目的与意义 进入互联网时代之后,随着人们对信息需求量,准确性的加大。人们对时间,日期的准确性有更大的需求,传统的日历已经不能满足人们的要求,电子万年历应运而生,大大方便了人们对时间日期的掌握,使每个用户都能随时在电脑旁边掌握日期,节日等信息。但是随着进入21世纪——移动互联网高速发展的时代,人们每时每刻都在使用移动终端,智能机已经被普及,大量进入人们手中,人们不管在何时何地都能利用移动终端来查看各类消息等,当然无论在任何时候,人们需要准确地掌握日期、节日,提醒等重要消息,手机版日历提醒系统就在这样的大背景下被开发出来。本文提到的日历系统是一款专注于为用户提供时间管理的Android软件,兼备公历、中国农历、各类节日、实时提醒等信息,方便用户每一天的生活。几乎在每一台Android

基于Android的日历系统的设计与实现

毕 业 设 计(论文) ` 院 系 控制与计算机工程学院计算机系 专业班级 软件工程1001班 学生姓名 指导教师 二○一四年六月 题 目 基于Android 的日历系统 的设计与实现

基于Android的日历系统的设计与实现 摘要 Android系统凭借其良好的用户体验、低廉的成本及高开放性产生了巨大的应用量和广阔的应用面。如今,基于Android系统的应用极为丰富,从输入法到影音播放器,从系统工具到网页浏览器,从社交网络客户端到学习办公助手工具,以及形式繁多的游戏应用,都有力体现了Android平台的强大的适应性和发展潜力。 而日历应用作为智能终端的出厂必备控件,更是Android系统中不可或缺的一部分。而应用开发商力求为客户带来更好的用户体验,将日历这一原本普通的生活用品打造成植于移动终端中的生活助手,且界面风格迥异,功能也是趋于多样化和一体化。 本文通过论述对基于Android的日历系统的开发的全过程,研究了Android系统的开发环境、核心构架、主要组件,展示了开发移动应用的一般过程,并对Android平台的背景、现状和发展前景进行了讨论。本次项目所实现的日历系统,除了最基本的日期信息查询功能外,还具备了公历转换农历功能、指定日期跳转功能、当天日期定位功能和日程管理功能。通过转换功能,用户可将希望查询的公历日期转为农历日期;如果用户想知道某一天或某个月有什么节日,可以使用跳转功能;在主界面没有显示当月日期时,用户可通过定位功能回到当天日期;而日程管理功能则为用户提供了类似备忘录的平台。 关键词;Android;移动终端;手机日历;移动应用开发

基于Android平台的日历系统的设计

基于Android平台的日历系统的设计

基于Android平台的日历系统的设计 摘要:针对智能手机用户对日历的需求,基于Android内核和架构,设计了自定义控件和相关算法,实现了对日历的查看、日期切换、节日查询等多项功能,并附加了记事本、身体健康数据记录等常见功能,体现了日历系统的实用性和方便性。 关键词:Android;日历查看;节日查询 中图分类号:TP311 文献标识码:A 文章编号:1009-3044()12-0058-02 1 概述 这是一个移动互联网应用越来越普遍的年代,智能手机的用户群体越来越广大,随处可见拿着手机的人群。随着生活节奏的加快,人们对信息需求量越来越大,对信息准确性要求越来越高,这些都要基于对时间和日期的更高和更多的需求,传统的日历已经不能满足人们的要求,手机平台上的日历系统应运而生,用户能够随时经过手机掌握日期和节日等信息。 本设计的预期目标为: 1)功能强大:除了日历的基本功能(查看日期)外,还实现了农历阴历互转、健康查询、日期查询、每日签到等功能。 2)操作方便:对于Android手机用户来说,本软件使用方便简单,功能使用方法一看便知,大大减少了用户的操作难度。

2 关键性技术 2.1 Android平台 Android是一种开放源码的操作系统,是现在智能手机采用的主流操作系统。Android操作系统最初由AndyRubin开发,最初只能使用Java语言进行基于Android平台的应用程序的开发,随着技术的成熟,Android快速发展,现在已经能够使用其它编程语言来进行基于Android平台的应用程序开发,因此越来越多的设计开发人员投入到基于Android平台的应用程序开发中,Android平台得到发展,充分体现其开放性。 2.2 XML技术 XML,即可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,能够用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 3 需求分析 3.1 系统需求 日历系统的用户是Android手机用户群体,因此,系统要满足大部分Android用户的需要,需要具备查看日历及相关的一些功能。 3.2 技术需求 日历系统采用现在最火的移动终端系统Android系统,利用分层设计的原则。需要开发人员熟悉Android平台和Java编程,

(开题报告)基于Android的日程表管理系统设计与实现--

基于Android的日程表管理系统设计与实现 一.课题的意义 Android是由Andy Rubin创立的一个手机操作系统,后来被Google公司收购。Google公司希望与各方共同建立一个标准化、开放式的移动电话软件平台,从而在移动产业内形成一个开放式的操作平台。 目前使用Android系统的手机的数量已经超越iPhone,Android系统已经成为全球使用量最大的手机系统。 相关数据显示:1.Android用户已经达9亿,不就会达到10亿; 2.仅有10%的国家没有被Android覆盖 3.人才需求仍然巨大。智能招聘网站上每天大约有2000多个Android人才招聘。 Android的原意为“机器人”,Google将Android的标志设计为绿色机器人,不但表达了字面意思,而且表达Android系统是一个符合环保概念、轻薄短小、功能强大的移动系统,意在使其成为第一个真正为手机打造的开放并且完整的系统。 随着智能移动设备和物联网的快速发展,对于智能手机的发展前景,人们更希望将大部分生活所需的直接用一部智能手机就可以搞定。比如:各种支付,手机开锁,手机当遥控器等等。 以往,我们都是用备忘录来记录我们的日程安排,在这个注重效率和便利的快节奏社会,这或多或少给我们生活带来了些不便。手机日程管理系统可以为人们日常生活提供方便,而且能让我们更充分的利用时间,规划我们的生活,让我们的生活有条不紊。我们知道,传统的备忘录大多数是用便签纸或者笔记本来记录,其带来了些不便,如易丢失、携带不便以及容易损坏等。而手机,我们却

往往是生活必备品,联系好友、上网冲浪以及视频娱乐等,我们都可以用手机实现。因此,手机日程管理将代替传统备忘录。我们可以随时随地拿出手机查看我们的日程安排,而且手机日常管理系统,还提供到点提醒功能,让我们能够准时完成我们的日程安排。手机日程管理系统就显得很有必要,如果有一个很好的手机日常管理软件,就可以大大方便人们的生活。 This barrier to application development began to crumble in November of 2007 when Google, under the Open Handset Alliance, released Android. The Open Handset Alliance is a group of hardware and software developers, including Google, NTT DoCoMo, Sprint Nextel, and HTC, whose goal is to create a more open cell phone environment. The first product to be released under the alliance is the mobile device operating system, Android. (For more information about the Open Handset Alliance, see https://www.360docs.net/doc/113765369.html,.) With the release of Android, Google made available a host of development tools and tutorials to aid would-be developers onto the new system. Help files, the platform software development kit (SDK), and even a developers’ community can be found at Google’s Android website, https://www.360docs.net/doc/113765369.html,/android. This site should be your starting point, and I highly encourage you to visit the site. 二.基本概况及发展趋势 目前,安卓应用程序发展十分迅速,各种各样的应用程序都能在安卓市场中找到,日程管理软件业随处可以见。其中,日程管家、日程表、日程备忘以及课程表在安卓市场上都有相当大的使用量,甚至很多知名企业也参与开发此类应用程序,如影响力比较大360公司开发的 360 课程表。此类软件在网上都有相当多的好评,可见,其对人们生活的带来了相当大的便捷。 虽然,该类应用有很多,但没有专门针对大学生开发的具有明显特色的一款软件。在大学生中,沉重的学习压力,凌乱的作息安排,上课地点的不断更换,临时课程的添加,让我们没有多余的心思去记那繁琐的教室、课程。因此,对于日程管理系统的开发和应用的改善就显得尤为重要。因此设计一个多元化,功能全面的日程管理系统尤为重要。日程管理系统是否实用直接影响其的使用量,通常,日程可分为日程安排、日历、课程表三大类。日程安排,大学生可能用的不多,但日后成为上班族就会用的频繁。日历,在生活中也是不可或缺的。课程表,适应于对学生做学习计划及上课课程提醒,便于学生合理利用时间。本项目旨在设计一个将日程安排,日历和课程表完美结合的日程管理系统,大大提高用户交互性及系统完善性。 三.课题要求及设计方案 3.1 设计主要内容:

基于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的开发的日历的应该一开始显示日历,然后登陆,进行记事,主要流程图如下:

软件工程毕业设计基于android的日历系统的设计与实现

基于Android的日历系统的设计与实现 摘要 Android系统凭借其良好的用户体验、低廉的成本及高开放性产生了巨大的应用量和广阔的应用面。如今,基于Android系统的应用极为丰富,从输入法到影音播放器,从系统工具到网页浏览器,从社交网络客户端到学习办公助手工具,以及形式繁多的游戏应用,都有力体现了Android平台的强大的适应性和发展潜力。 而日历应用作为智能终端的出厂必备控件,更是Android系统中不可或缺的一部分。而应用开发商力求为客户带来更好的用户体验,将日历这一原本普通的生活用品打造成植于移动终端中的生活助手,且界面风格迥异,功能也是趋于多样化和一体化。 本文通过论述对基于Android的日历系统的开发的全过程,研究了Android系统的开发环境、核心构架、主要组件,展示了开发移动应用的一般过程,并对Android平台的背景、现状和发展前景进行了讨论。本次项目所实现的日历系统,除了最基本的日期信息查询功能外,还具备了公历转换农历功能、指定日期跳转功能、当天日期定位功能和日程管理功能。通过转换功能,用户可将希望查询的公历日期转为农历日期;如果用户想知道某一天或某个月有什么节日,可以使用跳转功能;在主界面没有显示当月日期时,用户可通过定位功能回到当天日期;而日程管理功能则为用户提供了类似备忘录的平台。 关键词;Android;移动终端;手机日历;移动应用开发

THE DESIGN AND IMPLEMENTATION OF CALENDER BASED ON ANDROID SYSTEM Abstract Android system has been achieved a great number of users because of its excellent user experience,low cost and high openness.Nowadays,there are plenty of smartphone applications based on android system such as input methods,audio/video players,system tools,web browsers,social networks,school/office softwares,games,etc,which show great adaptation and development potential of Android. Calender has be忽略e a necessary widget in intelligent terminals and also a quite important part of Android system.App developers strive to improve the user experience so that they change the calender,a 忽略monplace articles for daily use,into a kind of assistant for users,with different kinds of interface.And its function be忽略es more and more diversified and incorporate. This article is about the whole development process of calender based on Android system, the development environment,the core framework and the main module of Android.Also,we will discuss the background,the current situation and the development potential.The Calendar we enforce in this project contains functions not only the most basic date information inquire,but also other functions such as gregorian-lunar transformer,current date locator,events https://www.360docs.net/doc/113765369.html,ers are able to transform gregorian dates they want to lunar dates by using gregorian-lunar transformer;If users want to check out festivals of dates,the skip function will help;Users could skip back to current date with the help of date locator when the main interface doesn ‘t show;And the events manager provides a kind of platform like memorandum. Keywords: Android; The mobile terminal; Smart mobile Calender;Mobile application

基于Android的日历系统的设计与实现

毕 业 设 计(论文) ` 院 系 控制与计算机工程学院计算机系 专业班级 软件工程1001班 学生姓名 指导教师 二○一四年六月 题 目 基于Android 的日历系统 的设计与实现

基于Android的日历系统的设计与实现 摘要 Android系统凭借其良好的用户体验、低廉的成本及高开放性产生了巨大的应用量和广阔的应用面。如今,基于Android系统的应用极为丰富,从输入法到影音播放器,从系统工具到网页浏览器,从社交网络客户端到学习办公助手工具,以及形式繁多的游戏应用,都有力体现了Android平台的强大的适应性和发展潜力。 而日历应用作为智能终端的出厂必备控件,更是Android系统中不可或缺的一部分。而应用开发商力求为客户带来更好的用户体验,将日历这一原本普通的生活用品打造成植于移动终端中的生活助手,且界面风格迥异,功能也是趋于多样化和一体化。 本文通过论述对基于Android的日历系统的开发的全过程,研究了Android系统的开发环境、核心构架、主要组件,展示了开发移动应用的一般过程,并对Android平台的背景、现状和发展前景进行了讨论。本次项目所实现的日历系统,除了最基本的日期信息查询功能外,还具备了公历转换农历功能、指定日期跳转功能、当天日期定位功能和日程管理功能。通过转换功能,用户可将希望查询的公历日期转为农历日期;如果用户想知道某一天或某个月有什么节日,可以使用跳转功能;在主界面没有显示当月日期时,用户可通过定位功能回到当天日期;而日程管理功能则为用户提供了类似备忘录的平台。 关键词;Android;移动终端;手机日历;移动应用开发

安卓日历开发源代码

基于android的手机日程管理系统详细设计说明书

目录 1、引言 (1) 1.1、编写目的 (1) 1.2、开发环境 (1) 2、程序系统的结构 (1) 3、功能模块设计说明 (2) 3.1、程序描述 (2) 3.2、功能 (2) 3.3、性能 (3) 3.4、输入项 (3) 3.5、输出项 (4) 3.6、算法 (4) 3.7、接口 (5) 4、界面设计说明 (6) 4.1、程序描述 (6) 4.2、功能 (6) 4.3、性能 (6) 4.4、输入项 (6) 4.5、输出项 (7) 4.6、页面布局代码 (7) 5、安全设置设计说明 (8) 5.1、程序描述 (8) 5.2、功能 (8) 5.3、性能 (8) 5.4、输入项 (8) 5.5、输出项 (8) 5.6、算法 (9) 5.7、尚未解决的问题 (10) 6、参考资料.............................................. 错误!未定义书签。

1、引言 1.1、编写目的 本设计书用于详细、准确和全面地定义基于android的手机日程管理系统的概要设计及软件开发的详细过程,方便读者了解软件的内部结构,从而对本日程管理系统有更深入的了解,以利于指导该系统后续的开发工作。 1.2、开发环境 软件系统的名称:基于Android的手机日程管理系统 项目开发环境:eclipse、Android系统平台 2、程序系统的结构 手机日程管理系统结构设计如下: 手机日程管理 功能模块设计界面设计安全设置设计其他需求设计 设置课程查 看 课 程 新 增 日 程 查 看 日 程 主 界 面 日 历 界 面 安 全 设 置 界 面 日 程 显 示 界 面 课 程 表 界 面 设 置 安 全 密 码 凭 密 码 查 看 软 件 响 应 时 间 软 件 稳 定 性图1 手机日程管理系统结构设计图

基于Android的日程管理系统设计与及开发

. 安卓项目演习开发实训基于Android的日程管理系统设计与及开发 项目名称基于Android日程管理系统—纳米生活 院系计算机与软件学院 班级 学号 学生姓名 课程老师

目录 第1章绪论 (4) 1.1项目背景 (4) 1.2项目目标 (4) 第2章系统开发环境及技术 (5) 2.1系统开发环境 (5) 2.1.1硬件环境 (5) 2.1.2软件支持 (6) 2.2系统开发技术 (6) 2.2.1 Java 简介 (6) 2.2.2 Android Studio简介 (6) 2.2.3 SQLite简介 (7) 第3章“日程管理”的需求分析 (8) 3.1用户需求 (8) 3.2功能分析 (8) 3.3开发环境 (8) 3.3.1 难点 (8)

3.3.2 易点 (8) 第4章概要设计 (10) 4.1 设计目标 (10) 4.2 系统角色 (10) 4.3 系统流程图 (10) 第5章详细设计 (12) 5.1 设计目标 (12) 5.2 编码设计 (12) 5.2.1 splash界面 (12) 5.2.2 日历界面 (13) 5.2.3 编辑日程界面 (14) 5.2.4 查看日程界面 (15) 5.2.5 删除日程界面 (16) 5.2.6 闹钟提醒界面 (17) 5.2.7 倒计时界面 (18) 5.2.8 日程提醒界面 (19) 5.2.9 通知栏提醒界面 (20) 第6章测试 (21) 6.1 闹钟提醒测试用例 (21) 6.2 备忘录测试用例 (22)

第7章小结 (23) 第8章参考文献 (24) 第1章绪论 1.1项目背景 随着计算机技术的飞速发展,计算机应用的迅速推广,计算机及技术给人们的日常生活、工作、学习带来了十分巨大的影响,计算机改变了人们的生活,工作的方式。而在使用计算机时有一些好的、实用的软件,将会给使用者提供非常便利的环境。因此我们采用Android技术开发一个实用的个人日程管理系统,以便提醒大家一些重要的事情不要忘记,比如开会,生日什么的事情,有了这款APP,它会按时的提醒你去做该事情,你可以设置提醒一次,每天提醒,每周提醒。

基于Android的日历系统

第一章引言 1.1项目背景 现在的智能手机已经非常普遍,而且其在生活中所占据的分量以及发挥的作用也是越来越重要,而且,查看时间、日期等功能也越来越完善。基于Android操作系统的智能手机具有非常完善的数据读取功能,这样的优势就可以非常方便的设计日历。同时,Android操作系统源代码都是公开的,可以在很多平台免费获取相应的资源,所以这些信息就可以很轻易的得到。很多用户都需要一个日历系统,方便随时方便的查询时间日期等,这也是所有手机都具有的基本功能。在开发新的日历系统时,一定要保证具有稳定的性能以及很好的客户体验,很好的将这些系统打造成日常生活不可或缺的产品以及方便稳定的工具,这样的生活助手在生活中一定具有很广阔的市场前景,同时也要保证外形美观,功能丰富。 本文主要阐述了Android操作系统的开发环境,发展现状以及主要组成模块等,对于该系统的开发应用程序进行了分析,还阐述了其在将来市场环境中具有前景以及不足进行了分析。本次开发的操作系统,可以实现查看日期等基本功能,还可以查询指定日期以及将相应的日期进行阳历与农历的转换。对于日期的管理,可以设置相应的跳转功能,也可以制定日期提醒,设备备忘录等。 1.2选题意义 本文开发的日历系统基于Android操作系统,能够实现原来设计的基本功能,包括查询日期以及显示制定日期等,而且能够针对阳历转换为相应的农历日期,还有日期管理功能。对于特殊节日的管理,系统也有相应的应对功能;对于日期的管理,可以设置相应的跳转功能,也可以制定日期提醒,设备备忘录等。该系统人机界面良好,操控性能好。

第二章 Android操作系统简介 2.1 Android操作系统基本结构 Android操作系统可以划分为四层结构,从最底层开始依次是应用层、应用框架层、系统运行库层以及Linux内核层,基本结构如图1-1. 图2-1 Android操作系统基本结构 (1)应用层(App1ication) 应用层主要用来与用户进行交互,也就是一个人及操作界面,允许用户通过点击等动作完成相应的操作。Android系统也自带一些基础性的应用和操作,比较常用的包括Home,Contacts以及Phone等。设计时可以依据这些应用框图完成相应的设计工作,主要有API程序等。这些基础性的应用程序需要在宣传之后,才能获

相关主题
相关文档
最新文档