Android日历完整实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实用第一智慧密集
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:弧的外切矩形的坐标。需要设置该矩形的左上