日历控件开发详解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);}}}