package com.dollearn.student.views.calendar;
|
|
import android.content.Context;
|
import android.graphics.Canvas;
|
import android.graphics.Color;
|
import android.graphics.LinearGradient;
|
import android.graphics.Paint;
|
import android.graphics.Shader;
|
|
import com.haibin.calendarview.Calendar;
|
import com.haibin.calendarview.MonthView;
|
|
/**
|
* 高仿魅族日历布局
|
* Created by huanghaibin on 2017/11/15.
|
*/
|
|
public class SimpleMonthView extends MonthView {
|
|
private int mRadius;
|
|
private Context context;
|
|
public SimpleMonthView(Context context) {
|
super(context);
|
this.context = context;
|
}
|
|
@Override
|
protected void onPreviewHook() {
|
mRadius = Math.min(mItemWidth, mItemHeight) / 5 * 2;
|
mSchemePaint.setStyle(Paint.Style.STROKE);
|
}
|
|
@Override
|
protected void onLoopStart(int x, int y) {
|
|
}
|
|
@Override
|
protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme) {
|
mSelectedPaint.setColor(Color.parseColor("#FD8302"));
|
canvas.drawRect(x+dip2Px(6),y+dip2Px(3),x+mItemWidth-dip2Px(6),y+mItemHeight-dip2Px(3),mSelectedPaint);
|
return true;
|
}
|
|
@Override
|
protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) {
|
int cx = x + mItemWidth / 2;
|
int cy = y + mItemHeight / 2;
|
String scheme = calendar.getScheme();
|
if (scheme.equals("true")){
|
mSchemePaint.setStrokeWidth(dip2Px(3));
|
mSchemePaint.setColor(Color.parseColor("#EF713B"));
|
mSchemePaint.setStyle(Paint.Style.FILL);
|
mSchemePaint.setStrokeCap(Paint.Cap.ROUND);
|
canvas.drawLine(cx-dip2Px(10),y+mItemHeight-dip2Px(2),
|
cx+dip2Px(10),y+mItemHeight-dip2Px(2),mSchemePaint);
|
}
|
}
|
|
@Override
|
protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) {
|
float baselineY = mTextBaseLine + y;
|
int cx = x + mItemWidth / 2;
|
|
if (isSelected) {
|
canvas.drawText(String.valueOf(calendar.getDay()),
|
cx,
|
baselineY,
|
mSelectTextPaint);
|
} else if (hasScheme) {
|
canvas.drawText(String.valueOf(calendar.getDay()),
|
cx,
|
baselineY,
|
calendar.isCurrentDay() ? mCurDayTextPaint :
|
calendar.isCurrentMonth() ? mSchemeTextPaint : mOtherMonthTextPaint);
|
|
} else if (onCalendarIntercept(calendar)){
|
canvas.drawText(String.valueOf(calendar.getDay()),
|
cx,
|
baselineY,
|
mOtherMonthTextPaint);
|
}else {
|
canvas.drawText(String.valueOf(calendar.getDay()), cx, baselineY,
|
calendar.isCurrentDay() ? mCurDayTextPaint : isInRange(calendar)?mCurMonthTextPaint : mOtherMonthTextPaint);
|
}
|
}
|
|
/**
|
* dp转px
|
*
|
* @param dpValue dp
|
* @return px
|
*/
|
int dip2Px(float dpValue) {
|
final float scale = context.getResources().getDisplayMetrics().density;
|
return (int) (dpValue * scale + 0.5f);
|
}
|
}
|