最近项目中需要一个日历控件,折腾来折腾去,看了不少源码。
感觉不是自己的写的源码总是受到限制,想美观一下,代码都要看半天(PS:本人处女座。。强迫症患者)
不纠结了自己动手做吧,先上图
主要就用了一个GridView
主要在于日历的计算代码,关键代码如下(PS:网上学习搬过来的)
//获得 当前 月份的 日期
public MCalendar[] getCalendar() {
MCalendar a[] = new MCalendar[42];
for (int i = 0; i < 42; i++) {
a[i] = new MCalendar();
}
nowdate.set(curYear, curMonth - 1, 1);
int week = nowdate.get(Calendar.DAY_OF_WEEK) - 1;// Calendar.DAY_OF_WEEK其实表示:一周中的第几天
int day = 0;
// 判断大月份
if (curMonth == 1 || curMonth == 3 || curMonth == 5 || curMonth == 7
|| curMonth == 8 || curMonth == 10 || curMonth == 12) {
day = 31;
}
// 判断小月
if (curMonth == 4 || curMonth == 6 || curMonth == 9 || curMonth == 11) {
day = 30;
}
// 判断平年与闰年
if (curMonth == 2) {
if (((curYear % 4 == 0) && (curYear % 100 != 0))
|| (curYear % 400 == 0)) {
day = 29;
}
else {
day = 28;
}
}
for (int i = week, n = 1; i < week + day; i++) {
a[i].setHAO(String.valueOf(n));
n++;
}
return a;
}