Skip to content

Commit 67b5c73

Browse files
support auto select day attr
1 parent a80fdbf commit 67b5c73

File tree

11 files changed

+47
-20
lines changed

11 files changed

+47
-20
lines changed

QUESTION.md

+7
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,13 @@ int differ(Calendar calendar);
389389
<!-- when select_mode=range_mode -->
390390
<attr name="min_select_range" format="integer" />
391391
<attr name="max_select_range" format="integer" />
392+
393+
<!-- auto select day -->
394+
<attr name="month_view_auto_select_day">
395+
<enum name="first_day_of_month" value="0" />
396+
<enum name="last_select_day" value="1" />
397+
<enum name="last_select_day_ignore_current" value="2" />
398+
</attr>
392399
</declare-styleable>
393400

394401
```

QUESTION_ZH.md

+7
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,13 @@ int differ(Calendar calendar);//日期运算,相差多少天
413413
<!-- 当 select_mode=range_mode -->
414414
<attr name="min_select_range" format="integer" />
415415
<attr name="max_select_range" format="integer" />
416+
417+
<!-- auto select day -->
418+
<attr name="month_view_auto_select_day">
419+
<enum name="first_day_of_month" value="0" />
420+
<enum name="last_select_day" value="1" />
421+
<enum name="last_select_day_ignore_current" value="2" />
422+
</attr>
416423
</declare-styleable>
417424

418425
```

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ You can't think of the calendar can be so elegant!
1212

1313
### Gradle
1414
```
15-
compile 'com.haibin:calendarview:3.6.3'
15+
compile 'com.haibin:calendarview:3.6.4'
1616
```
1717

1818
```
1919
<dependency>
2020
<groupId>com.haibin</groupId>
2121
<artifactId>calendarview</artifactId>
22-
<version>3.6.3</version>
22+
<version>3.6.4</version>
2323
<type>pom</type>
2424
</dependency>
2525
```

README_ZH.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ Android上一个优雅、高度自定义、性能高效的日历控件,完美
66

77
插拔式设计:好比插座一样,插上灯泡就会亮,插上风扇就会转,看用户需求什么而不是看插座有什么,只要是电器即可。此框架使用插拔式,既可以在编译时指定年月日视图,如:app:month_view="xxx.xxx.MonthView.class",也可在运行时动态更换年月日视图,如:CalendarView.setMonthViewClass(MonthView.Class),从而达到UI即插即用的效果,相当于框架不提供UI实现,让UI都由客户端实现,不至于日历UI都千篇一律,只需遵守插拔式接口即可随意定制,自由化程度非常高。
88

9-
[**English Version**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md)
9+
[**English Version**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION.md)
1010

1111
[**详细介绍**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md)
1212

1313
### Gradle
1414
```
15-
compile 'com.haibin:calendarview:3.6.3
15+
compile 'com.haibin:calendarview:3.6.4
1616
```
1717
```
1818
<dependency>
1919
<groupId>com.haibin</groupId>
2020
<artifactId>calendarview</artifactId>
21-
<version>3.6.3</version>
21+
<version>3.6.4</version>
2222
<type>pom</type>
2323
</dependency>
2424
```
@@ -54,7 +54,7 @@ compile 'com.haibin:calendarview:3.6.3
5454
<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/year_view.png" height="650"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/range.png" height="650"/>
5555
### 中国式变态需求风格
5656
<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/custom_expand.png" height="650"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/custom_shrink.png" height="650"/>
57-
### 收缩展开的魅族风格效果
57+
### 收缩展开的魅族风格效果a
5858
<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/meizu_expand.png" height="650"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/meizu_shrink.png" height="650"/>
5959
### 全屏和多彩风格
6060
<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/full_calendar.png" height="650"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://github.com/huanghaibin-dev/CalendarView/blob/master/app/src/main/assets/color_expand.png" height="650"/>

app/src/main/res/layout/activity_main.xml

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@
172172
app:year_view_scheme_color="#f17706"
173173
app:year_view_week_height="0dp"
174174
app:year_view_week_text_color="#666666"
175+
app:month_view_auto_select_day="last_select_day_ignore_current"
175176
app:year_view_week_text_size="7sp" />
176177

177178

calendarview/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
minSdkVersion 14
99
//noinspection OldTargetApi
1010
targetSdkVersion 23
11-
versionCode 363
12-
versionName "3.6.3"
11+
versionCode 364
12+
versionName "3.6.4"
1313

1414
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1515

calendarview/src/main/java/com/haibin/calendarview/CalendarUtil.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,7 @@ static Calendar getFirstCalendarFromMonthViewPager(int position, CalendarViewDel
729729
Calendar calendar = new Calendar();
730730
calendar.setYear((position + delegate.getMinYearMonth() - 1) / 12 + delegate.getMinYear());
731731
calendar.setMonth((position + delegate.getMinYearMonth() - 1) % 12 + 1);
732-
if (delegate.getDefaultCalendarSelectDay() == CalendarViewDelegate.LAST_MONTH_VIEW_SELECT_DAY) {
732+
if (delegate.getDefaultCalendarSelectDay() != CalendarViewDelegate.FIRST_DAY_OF_MONTH) {
733733
int monthDays = getMonthDaysCount(calendar.getYear(), calendar.getMonth());
734734
Calendar indexCalendar = delegate.mIndexCalendar;
735735
calendar.setDay(indexCalendar == null || indexCalendar.getDay() == 0 ? 1 :
@@ -760,7 +760,8 @@ static Calendar getFirstCalendarFromMonthViewPager(int position, CalendarViewDel
760760
* @return 获取边界访问日期
761761
*/
762762
static Calendar getRangeEdgeCalendar(Calendar calendar, CalendarViewDelegate delegate) {
763-
if (CalendarUtil.isCalendarInRange(delegate.getCurrentDay(), delegate)) {
763+
if (CalendarUtil.isCalendarInRange(delegate.getCurrentDay(), delegate)
764+
&& delegate.getDefaultCalendarSelectDay() != CalendarViewDelegate.LAST_MONTH_VIEW_SELECT_DAY_IGNORE_CURRENT) {
764765
return delegate.createCurrentDate();
765766
}
766767
if (isCalendarInRange(calendar, delegate)) {

calendarview/src/main/java/com/haibin/calendarview/CalendarView.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -625,13 +625,17 @@ public final void setYearViewScrollable(boolean yearViewScrollable) {
625625

626626

627627
public final void setDefaultMonthViewSelectDay(){
628-
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.DEFAULT_MONTH_VIEW_SELECT_DAY);
628+
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.FIRST_DAY_OF_MONTH);
629629
}
630630

631631
public final void setLastMonthViewSelectDay(){
632632
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.LAST_MONTH_VIEW_SELECT_DAY);
633633
}
634634

635+
public final void setLastMonthViewSelectDayIgnoreCurrent(){
636+
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.LAST_MONTH_VIEW_SELECT_DAY_IGNORE_CURRENT);
637+
}
638+
635639
/**
636640
* 清除选择范围
637641
*/

calendarview/src/main/java/com/haibin/calendarview/CalendarViewDelegate.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,19 @@ final class CalendarViewDelegate {
5050
static final int WEEK_START_WITH_SAT = 7;
5151

5252
/**
53-
* 默认选择日期1号
53+
* 默认选择日期1号first_day_of_month
5454
*/
55-
static final int DEFAULT_MONTH_VIEW_SELECT_DAY = 0;
55+
static final int FIRST_DAY_OF_MONTH = 0;
5656

5757
/**
58-
* 跟随上个月
58+
* 跟随上个月last_select_day
5959
*/
6060
static final int LAST_MONTH_VIEW_SELECT_DAY = 1;
6161

62+
/**
63+
* 跟随上个月last_select_day_ignore_current忽视今天
64+
*/
65+
static final int LAST_MONTH_VIEW_SELECT_DAY_IGNORE_CURRENT = 2;
6266

6367
private int mDefaultCalendarSelectDay;
6468

@@ -416,7 +420,7 @@ final class CalendarViewDelegate {
416420
mYearViewScrollable = array.getBoolean(R.styleable.CalendarView_year_view_scrollable, true);
417421

418422
mDefaultCalendarSelectDay = array.getInt(R.styleable.CalendarView_month_view_auto_select_day,
419-
1);
423+
FIRST_DAY_OF_MONTH);
420424

421425
mMonthViewShowMode = array.getInt(R.styleable.CalendarView_month_view_show_mode, MODE_ALL_MONTH);
422426
mWeekStart = array.getInt(R.styleable.CalendarView_week_start_with, WEEK_START_WITH_SUN);
@@ -1075,11 +1079,13 @@ final List<Calendar> getSelectCalendarRange() {
10751079
calendar.setYear(date.get(java.util.Calendar.YEAR));
10761080
calendar.setMonth(date.get(java.util.Calendar.MONTH) + 1);
10771081
calendar.setDay(date.get(java.util.Calendar.DAY_OF_MONTH));
1082+
LunarCalendar.setupLunarCalendar(calendar);
1083+
updateCalendarScheme(calendar);
10781084
if (mCalendarInterceptListener != null &&
10791085
mCalendarInterceptListener.onCalendarIntercept(calendar)) {
10801086
continue;
10811087
}
1082-
LunarCalendar.setupLunarCalendar(calendar);
1088+
10831089
calendars.add(calendar);
10841090
}
10851091
addSchemesFromMap(calendars);

calendarview/src/main/res/values/attrs.xml

+3-2
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,9 @@
102102

103103
<!-- auto select day -->
104104
<attr name="month_view_auto_select_day">
105-
<enum name="first_month_of_day" value="0" />
106-
<enum name="last_select" value="1" />
105+
<enum name="first_day_of_month" value="0" />
106+
<enum name="last_select_day" value="1" />
107+
<enum name="last_select_day_ignore_current" value="2" />
107108
</attr>
108109
</declare-styleable>
109110

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ org.gradle.jvmargs=-Xmx1536m
1818
POM_BINTRAY_NAME=com.haibin:calendarview
1919
POM_DESCRIPTION=A very good CalendarView for Android.
2020
POM_ARTIFACT_ID=calendarview
21-
VERSION_NAME=3.6.3
22-
VERSION_CODE=3.6.3
21+
VERSION_NAME=3.6.4
22+
VERSION_CODE=3.6.4
2323
POM_BINTRAY_PRPO=maven
2424
POM_PACKAGING=aar
2525
POM_NAME=calendarview

0 commit comments

Comments
 (0)