package com.dollearn.student.views;
|
|
import android.content.Context;
|
import android.graphics.Canvas;
|
import android.graphics.Color;
|
import android.graphics.Paint;
|
import android.util.AttributeSet;
|
import android.util.DisplayMetrics;
|
import android.view.View;
|
|
/**
|
* Created by zhouyou on 2016/7/25.
|
* Class desc:
|
*
|
* 自定义日历顶部星期View
|
*/
|
public class WeekView extends View {
|
|
private String[] mWeeks = {"日", "一", "二", "三", "四", "五", "六"};
|
|
// 字体大小
|
private int mWeekTextSize = 14;
|
// 字体颜色
|
private int mWeekTextColor = Color.parseColor("#ffffff");
|
// 背景颜色
|
private int mWeekBgColor = Color.parseColor("#FFFFFF");
|
|
private DisplayMetrics mMetrics;
|
private final Paint mPaint;
|
|
public WeekView(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
// 获取手机屏幕参数
|
mMetrics = getResources().getDisplayMetrics();
|
// 创建画笔
|
mPaint = new Paint();
|
}
|
|
@Override
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
|
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
|
|
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
|
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
|
if (heightMode == MeasureSpec.AT_MOST) {
|
heightSize = mMetrics.densityDpi * 30;
|
}
|
if (widthMode == MeasureSpec.AT_MOST) {
|
widthSize = mMetrics.densityDpi * 300;
|
}
|
setMeasuredDimension(widthSize, heightSize);
|
}
|
|
@Override
|
protected void onDraw(Canvas canvas) {
|
int width = getWidth();
|
int height = getHeight();
|
|
// 画背景
|
mPaint.setColor(mWeekBgColor);
|
// canvas.drawRect(0, 0, width, height, mPaint);
|
|
// 画星期
|
mPaint.setStyle(Paint.Style.FILL);
|
mPaint.setTextSize(mWeekTextSize * mMetrics.scaledDensity);
|
mPaint.setColor(mWeekTextColor);
|
int columnWidth = width / 7;
|
for(int i = 0; i < mWeeks.length; i++){
|
String text = mWeeks[i];
|
int fontWidth = (int) mPaint.measureText(text);
|
int startX = columnWidth * i + (columnWidth - fontWidth) / 2;
|
int startY = (int) (height / 2 - (mPaint.ascent() + mPaint.descent()) / 2);
|
canvas.drawText(text, startX, startY, mPaint);
|
}
|
}
|
|
/**
|
* 设置星期数据(默认值:"日","一","二","三","四","五","六")
|
*/
|
public void setWeeks(String[] weeks){
|
this.mWeeks = weeks;
|
}
|
|
/**
|
* 设置星期字体大小
|
*/
|
public void setWeekTextSize(int size){
|
this.mWeekTextSize = size;
|
}
|
|
/**
|
* 设置星期背景颜色
|
*/
|
public void setWeekBgColor(int color){
|
this.mWeekBgColor = color;
|
}
|
|
/**
|
* 设置星期文字颜色
|
*/
|
public void setWeekTextColor(int color){ this.mWeekTextColor = color; }
|
}
|