首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

年历控件开发详解1

2013-01-19 
日历控件开发详解1在前一篇日志中我们已经做好了日历控件的准备工作,今天我们将继续完成这个日历控件。三、

日历控件开发详解1

在前一篇日志中我们已经做好了日历控件的准备工作,今天我们将继续完成这个日历控件。

三、日历元素之Border

在Border类中,我们主要完成日历边框的绘制

package com.xys.mycalender.element;import android.app.Activity;import android.graphics.Canvas;import android.view.View;import com.xys.mycalender.R;import com.xys.mycalender.base.CalendarBase;/* * 绘制一周的名称 */public class Week extends CalendarBase {//参数private float left;private float top;private float eachWeekWidth;private float eachWeekHeight;//一周的名称private String[] weeknames;//一周名称的颜色1-5private int weekdayColor;public Week(Activity activity, View view) {super(activity, view);//获取一周名称颜色1-5weekdayColor=activity.getResources().getColor(R.color.weekname_color);//获取一周名称weeknames=activity.getResources().getStringArray(R.array.week_name);//设置一周名称大小paint.setTextSize(weekNameSize);paint.setFakeBoldText(true);}@Overridepublic void onDraw(Canvas canvas) {// TODO Auto-generated method stubleft=boderMargin;top=boderMargin;eachWeekWidth=(view.getMeasuredWidth()-boderMargin*2)/7;eachWeekHeight=eachWeekWidth;for (int i = 0; i < weeknames.length; i++) {//周六日if (i==0||i==weeknames.length-1) {paint.setColor(weekendColor);}else {//平日paint.setColor(weekdayColor);}//文字绘制在每一格的中间 measureText返回文字的长度left=boderMargin+eachWeekWidth*i+(eachWeekWidth-paint.measureText(weeknames[i]))/2;top=boderMargin+weekNameMargin+paint.getTextSize();//开始绘制canvas.drawText(weeknames[i], left, top, paint);}}}

绘制一周名称的关键在于要将文字绘制在格子的中间,这点的实现见程序倒数2、3行。

热点排行