/** * 下一页 */ public void toNextPager() { if (STATE == Attrs.MONTH) { monthCalendar.toNextPager(); } else { weekCalendar.toNextPager(); } }
/** * 设置日期区间 * * @param startFormatDate * @param endFormatDate */ public void setDateInterval(String startFormatDate, String endFormatDate) { monthCalendar.setDateInterval(startFormatDate, endFormatDate); weekCalendar.setDateInterval(startFormatDate, endFormatDate); }
/** * 点击不可用的日期回调 * * @param onClickDisableDateListener */ public void setOnClickDisableDateListener(OnClickDisableDateListener onClickDisableDateListener) { monthCalendar.setOnClickDisableDateListener(onClickDisableDateListener); weekCalendar.setOnClickDisableDateListener(onClickDisableDateListener); }
@Override public void run() { monthRect = new Rect(0, 0, monthCalendar.getWidth(), monthCalendar.getHeight()); weekRect = new Rect(0, 0, weekCalendar.getWidth(), weekCalendar.getHeight()); monthCalendar.setY(STATE == Attrs.MONTH ? 0 : getMonthYOnWeekState()); childLayout.setY(STATE == Attrs.MONTH ? monthHeight : weekHeight); } });
@Override protected void onSetWeekVisible(int dy) { if (monthCalendar.isWeekState() && dy>0) { weekCalendar.setVisibility(VISIBLE); } else if (monthCalendar.getY() >= -monthCalendar.getMonthCalendarOffset() && dy < 0) { weekCalendar.setVisibility(INVISIBLE); } }
@Override public void onClickCurrentWeek(LocalDate localDate) { if (isClickDateEnable(localDate)) { onClickDate(localDate,0); } else{ onClickDisableDate(localDate); } }
@Override protected float getGestureMonthUpOffset(int dy) { float maxOffset = monthCalendar.getMonthCalendarOffset() - Math.abs(monthCalendar.getY()); return getOffset(dy, maxOffset); }
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) { //super.onLayout(changed, l, t, r, b); //调用父类的该方法会造成 快速滑动月日历同时快速上滑recyclerview造成月日历的残影 int measuredWidth = getMeasuredWidth(); weekCalendar.layout(0, 0, measuredWidth, weekHeight); monthCalendar.layout(0, 0, measuredWidth, monthHeight); childLayout.layout(0, childLayoutLayoutTop, measuredWidth, childLayout.getMeasuredHeight() + childLayoutLayoutTop); }
public void setCalendarPainter(CalendarPainter calendarPainter) { this.calendarPainter = calendarPainter; monthCalendar.setCalendarPainter(calendarPainter); weekCalendar.setCalendarPainter(calendarPainter); }
/** * 日历初始化的日期 * * @param formatDate */ public void setInitializeDate(String formatDate) { monthCalendar.setInitializeDate(formatDate); weekCalendar.setInitializeDate(formatDate); }
/** * 上一页 */ public void toLastPager() { if (STATE == Attrs.MONTH) { monthCalendar.toLastPager(); } else { weekCalendar.toLastPager(); } }
@Override public void run() { //此时需要根据月日历的选中日期调整Y值 // post是因为在前面得到当前view是再post中完成,如果不这样直接获取位置信息,会出现老的数据,不能获取正确的数据 monthCalendar.setY(getMonthYOnWeekState()); } });
public void notifyAllView() { monthCalendar.notifyAllView(); weekCalendar.notifyAllView(); }
public void setDateInterval(String startFormatDate, String endFormatDate) { attrs.startDateString = startFormatDate; attrs.endDateString = endFormatDate; initDate(initializeDate); }
/** * 月日历执行自动滑动动画的回调 * 用来控制周日历的显示还是隐藏 * * @param offset */ @Override public void onMonthAnimatorChanged(int offset) { onSetWeekVisible(offset); }
@Override public void run() { drawView(getCurrentItem()); } });
@Override public void onClick(View v) { miui9Calendar.toToday(); } });
@Override public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) { //跟随手势滑动 gestureMove(dy, consumed); }