Skip to content

Commit 9c873b5

Browse files
new attr month_view_auto_select_day
1 parent 0a852bf commit 9c873b5

File tree

11 files changed

+109
-57
lines changed

11 files changed

+109
-57
lines changed

.idea/codeStyles/Project.xml

+28
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

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

1313
### gradle
1414
```
15-
implementation 'com.haibin:calendarview:3.6.4'
15+
implementation 'com.haibin:calendarview:3.6.6'
1616
```
1717

1818
### Androidx support since version 3.6.5
1919
```
20-
implementation 'com.haibin:calendarview:3.6.5'
20+
implementation 'com.haibin:calendarview:3.6.7'
2121
```
2222

2323
```
2424
<dependency>
2525
<groupId>com.haibin</groupId>
2626
<artifactId>calendarview</artifactId>
27-
<version>3.6.4</version>
27+
<version>3.6.6</version>
2828
<type>pom</type>
2929
</dependency>
3030
```

README_ZH.md

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

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

1818
### 从3.6.5开始支持Androidx
1919
```
20-
implementation 'com.haibin:calendarview:3.6.5'
20+
implementation 'com.haibin:calendarview:3.6.7'
2121
```
2222

2323
```
2424
<dependency>
2525
<groupId>com.haibin</groupId>
2626
<artifactId>calendarview</artifactId>
27-
<version>3.6.4</version>
27+
<version>3.6.6</version>
2828
<type>pom</type>
2929
</dependency>
3030
```

app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ dependencies {
3232
implementation 'com.google.android.material:material:1.0.0'
3333
//noinspection GradleDependency
3434
implementation 'com.github.bumptech.glide:glide:3.7.0'
35-
//implementation 'com.haibin:calendarview:3.6.5'
35+
//implementation 'com.haibin:calendarview:3.6.7'
3636
testImplementation 'junit:junit:4.12'
3737
implementation project(':calendarview')
3838

calendarview/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
minSdkVersion 14
88
//noinspection OldTargetApi
99
targetSdkVersion 28
10-
versionCode 365
11-
versionName "3.6.5"
10+
versionCode 367
11+
versionName "3.6.7"
1212
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1313

1414
}

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

+8-6
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,14 @@ public void showCalendarView() {
291291
@SuppressLint("ClickableViewAccessibility")
292292
@Override
293293
public boolean onTouchEvent(MotionEvent event) {
294+
if (mGestureMode == GESTURE_MODE_DISABLED ||
295+
mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_MONTH_VIEW ||
296+
mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_WEEK_VIEW) {//禁用手势,或者只显示某种视图
297+
return false;
298+
}
299+
if(mDelegate == null){
300+
return false;
301+
}
294302
if (mDelegate.isShowYearSelectedLayout) {
295303
return false;
296304
}
@@ -318,12 +326,6 @@ public boolean onTouchEvent(MotionEvent event) {
318326
break;
319327
}
320328
case MotionEvent.ACTION_MOVE:
321-
if (mGestureMode == GESTURE_MODE_DISABLED ||
322-
mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_MONTH_VIEW ||
323-
mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_WEEK_VIEW) {//禁用手势,或者只显示某种视图
324-
return false;
325-
}
326-
327329

328330
getPointerIndex(event, mActivePointerId);
329331
if (mActivePointerId == INVALID_POINTER) {

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

+21-7
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,8 @@ public void scrollToSelectCalendar() {
522522
scrollToCalendar(mDelegate.mSelectedCalendar.getYear(),
523523
mDelegate.mSelectedCalendar.getMonth(),
524524
mDelegate.mSelectedCalendar.getDay(),
525-
false);
525+
false,
526+
true);
526527
}
527528

528529
/**
@@ -533,7 +534,7 @@ public void scrollToSelectCalendar() {
533534
* @param day day
534535
*/
535536
public void scrollToCalendar(int year, int month, int day) {
536-
scrollToCalendar(year, month, day, false);
537+
scrollToCalendar(year, month, day, false, true);
537538
}
538539

539540
/**
@@ -545,6 +546,19 @@ public void scrollToCalendar(int year, int month, int day) {
545546
* @param smoothScroll smoothScroll
546547
*/
547548
public void scrollToCalendar(int year, int month, int day, boolean smoothScroll) {
549+
scrollToCalendar(year, month, day, smoothScroll, true);
550+
}
551+
552+
/**
553+
* 滚动到指定日期
554+
*
555+
* @param year year
556+
* @param month month
557+
* @param day day
558+
* @param smoothScroll smoothScroll
559+
* @param invokeListener 调用日期事件
560+
*/
561+
public void scrollToCalendar(int year, int month, int day, boolean smoothScroll, boolean invokeListener) {
548562

549563
Calendar calendar = new Calendar();
550564
calendar.setYear(year);
@@ -563,9 +577,9 @@ public void scrollToCalendar(int year, int month, int day, boolean smoothScroll)
563577
}
564578

565579
if (mWeekPager.getVisibility() == VISIBLE) {
566-
mWeekPager.scrollToCalendar(year, month, day, smoothScroll);
580+
mWeekPager.scrollToCalendar(year, month, day, smoothScroll, invokeListener);
567581
} else {
568-
mMonthPager.scrollToCalendar(year, month, day, smoothScroll);
582+
mMonthPager.scrollToCalendar(year, month, day, smoothScroll, invokeListener);
569583
}
570584
}
571585

@@ -620,15 +634,15 @@ public final void setYearViewScrollable(boolean yearViewScrollable) {
620634
}
621635

622636

623-
public final void setDefaultMonthViewSelectDay(){
637+
public final void setDefaultMonthViewSelectDay() {
624638
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.FIRST_DAY_OF_MONTH);
625639
}
626640

627-
public final void setLastMonthViewSelectDay(){
641+
public final void setLastMonthViewSelectDay() {
628642
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.LAST_MONTH_VIEW_SELECT_DAY);
629643
}
630644

631-
public final void setLastMonthViewSelectDayIgnoreCurrent(){
645+
public final void setLastMonthViewSelectDayIgnoreCurrent() {
632646
mDelegate.setDefaultCalendarSelectDay(CalendarViewDelegate.LAST_MONTH_VIEW_SELECT_DAY_IGNORE_CURRENT);
633647
}
634648

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

+24-18
Original file line numberDiff line numberDiff line change
@@ -145,24 +145,28 @@ private static String numToChinese(int month, int day, int leap) {
145145
* 1001 0101 0101 1010 1011 1111
146146
* 闰九月 农历正月初一对应公历1月31号
147147
*/
148-
private static final int LUNAR_INFO[] = {
149-
0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, //
150-
0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, //
151-
0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, //
152-
0x09570, 0x052f2, 0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, //
153-
0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, //
154-
0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, //
155-
0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, //
156-
0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, //
157-
0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, //
158-
0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, //
159-
0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, //
160-
0x092e0, 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, //
161-
0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, //
162-
0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, //
163-
0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, //
164-
0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, //
165-
0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0
148+
private static final int[] LUNAR_INFO = {
149+
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,//1900-1909
150+
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,//1910-1919
151+
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,//1920-1929
152+
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,//1930-1939
153+
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,//1940-1949
154+
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,//1950-1959
155+
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,//1960-1969
156+
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b6a0,0x195a6,//1970-1979
157+
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,//1980-1989
158+
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,//1990-1999
159+
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,//2000-2009
160+
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,//2010-2019
161+
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,//2020-2029
162+
0x05aa0,0x076a3,0x096d0,0x04afb,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,//2030-2039
163+
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,//2040-2049
164+
0x14b63,0x09370,0x049f8,0x04970,0x064b0,0x168a6,0x0ea50, 0x06b20,0x1a6c4,0x0aae0,//2050-2059
165+
0x0a2e0,0x0d2e3,0x0c960,0x0d557,0x0d4a0,0x0da50,0x05d55,0x056a0,0x0a6d0,0x055d4,//2060-2069
166+
0x052d0,0x0a9b8,0x0a950,0x0b4a0,0x0b6a6,0x0ad50,0x055a0,0x0aba4,0x0a5b0,0x052b0,//2070-2079
167+
0x0b273,0x06930,0x07337,0x06aa0,0x0ad50,0x14b55,0x04b60,0x0a570,0x054e4,0x0d160,//2080-2089
168+
0x0e968,0x0d520,0x0daa0,0x16aa6,0x056d0,0x04ae0,0x0a9d4,0x0a2d0,0x0d150,0x0f252,//2090-2099
169+
0x0d520
166170
};
167171

168172

@@ -219,6 +223,7 @@ private static String getSolarTerm(int year, int month, int day) {
219223
String[] solarTerm = SOLAR_TERMS.get(year);
220224
String text = year + getString(month, day);
221225
String solar = "";
226+
assert solarTerm != null;
222227
for (String solarTermName : solarTerm) {
223228
if (solarTermName.contains(text)) {
224229
solar = solarTermName.replace(text, "");
@@ -269,6 +274,7 @@ private static String getSpecialFestival(int year, int month, int day) {
269274
String[] specialFestivals = SPECIAL_FESTIVAL.get(year);
270275
String text = year + getString(month, day);
271276
String solar = "";
277+
assert specialFestivals != null;
272278
for (String special : specialFestivals) {
273279
if (special.contains(text)) {
274280
solar = special.replace(text, "");

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

+10-9
Original file line numberDiff line numberDiff line change
@@ -294,11 +294,12 @@ final void updateRange() {
294294
/**
295295
* 滚动到指定日期
296296
*
297-
* @param year 年
298-
* @param month 月
299-
* @param day 日
297+
* @param year 年
298+
* @param month 月
299+
* @param day 日
300+
* @param invokeListener 调用日期事件
300301
*/
301-
void scrollToCalendar(int year, int month, int day, boolean smoothScroll) {
302+
void scrollToCalendar(int year, int month, int day, boolean smoothScroll, boolean invokeListener) {
302303
isUsingScrollToCalendar = true;
303304
Calendar calendar = new Calendar();
304305
calendar.setYear(year);
@@ -330,7 +331,7 @@ void scrollToCalendar(int year, int month, int day, boolean smoothScroll) {
330331
mParentLayout.updateSelectWeek(week);
331332
}
332333

333-
if (mDelegate.mCalendarSelectListener != null) {
334+
if (mDelegate.mCalendarSelectListener != null && invokeListener) {
334335
mDelegate.mCalendarSelectListener.onCalendarSelect(calendar, false);
335336
}
336337
if (mDelegate.mInnerListener != null) {
@@ -411,7 +412,7 @@ void updateSelected() {
411412
/**
412413
* 更新字体颜色大小
413414
*/
414-
final void updateStyle(){
415+
final void updateStyle() {
415416
for (int i = 0; i < getChildCount(); i++) {
416417
BaseMonthView view = (BaseMonthView) getChildAt(i);
417418
view.updateStyle();
@@ -558,8 +559,8 @@ final void clearMultiSelect() {
558559
}
559560
}
560561

561-
private void notifyAdapterDataSetChanged(){
562-
if(getAdapter() == null){
562+
private void notifyAdapterDataSetChanged() {
563+
if (getAdapter() == null) {
563564
return;
564565
}
565566
getAdapter().notifyDataSetChanged();
@@ -606,7 +607,7 @@ public int getItemPosition(@NonNull Object object) {
606607
}
607608

608609
@Override
609-
public boolean isViewFromObject(View view,@NonNull Object object) {
610+
public boolean isViewFromObject(View view, @NonNull Object object) {
610611
return view.equals(object);
611612
}
612613

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

+7-6
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,9 @@ void updateRange() {
176176
* @param year 年
177177
* @param month 月
178178
* @param day 日
179+
* @param invokeListener 调用日期事件
179180
*/
180-
void scrollToCalendar(int year, int month, int day, boolean smoothScroll) {
181+
void scrollToCalendar(int year, int month, int day, boolean smoothScroll, boolean invokeListener) {
181182
isUsingScrollToCalendar = true;
182183
Calendar calendar = new Calendar();
183184
calendar.setYear(year);
@@ -192,7 +193,7 @@ void scrollToCalendar(int year, int month, int day, boolean smoothScroll) {
192193
if (mDelegate.mInnerListener != null) {
193194
mDelegate.mInnerListener.onWeekDateSelected(calendar, false);
194195
}
195-
if (mDelegate.mCalendarSelectListener != null) {
196+
if (mDelegate.mCalendarSelectListener != null && invokeListener) {
196197
mDelegate.mCalendarSelectListener.onCalendarSelect(calendar, false);
197198
}
198199
int i = CalendarUtil.getWeekFromDayInMonth(calendar, mDelegate.getWeekStart());
@@ -290,7 +291,7 @@ void updateSelected() {
290291
/**
291292
* 更新字体颜色大小
292293
*/
293-
final void updateStyle(){
294+
final void updateStyle() {
294295
for (int i = 0; i < getChildCount(); i++) {
295296
BaseWeekView view = (BaseWeekView) getChildAt(i);
296297
view.updateStyle();
@@ -332,7 +333,7 @@ void updateShowMode() {
332333
* 更新周起始
333334
*/
334335
void updateWeekStart() {
335-
if(getAdapter() == null){
336+
if (getAdapter() == null) {
336337
return;
337338
}
338339
int count = getAdapter().getCount();
@@ -397,8 +398,8 @@ final void clearMultiSelect() {
397398
}
398399
}
399400

400-
private void notifyAdapterDataSetChanged(){
401-
if(getAdapter() == null){
401+
private void notifyAdapterDataSetChanged() {
402+
if (getAdapter() == null) {
402403
return;
403404
}
404405
getAdapter().notifyDataSetChanged();

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.5
22-
VERSION_CODE=3.6.5
21+
VERSION_NAME=3.6.7
22+
VERSION_CODE=3.6.7
2323
POM_BINTRAY_PRPO=maven
2424
POM_PACKAGING=aar
2525
POM_NAME=calendarview

0 commit comments

Comments
 (0)