Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/yannecer/NCalendar
Browse files Browse the repository at this point in the history
  • Loading branch information
yannecer committed Nov 13, 2019
2 parents beeca2a + b0cdfea commit 8c37a9a
Show file tree
Hide file tree
Showing 3 changed files with 158 additions and 23 deletions.
74 changes: 74 additions & 0 deletions CalendarAdapter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@


#### CalendarAdapter 日历适配器,获取日历Item和日历背景,再通过onBoind...设置对应的数据,具体用法参见demo


/**
* 获取日历背景View,可用于做背景渐变等,不需要可不用实现
*
* @param context
* @return
*/
public View getCalendarBackgroundView(Context context) {
return null;
}

/**
* 绑定日历背景View,不需要可不用实现
*
* @param iCalendarView ICalendarView 日历页面,可判断是月日历或者周日历
* @param calendarBackgroundView 日历View,即是getCalendarBackgroundView获取的view
* @param localDate
* @param totalDistance 滑动的全部距离
* @param currentDistance 当前位置的距离
*/
public void onBindCalendarBackgroundView(ICalendarView iCalendarView, View calendarBackgroundView, LocalDate localDate, int totalDistance, int currentDistance) {

}

/**
* 获取日历item的View
*
* @param context
* @return
*/
public abstract View getCalendarItemView(Context context);


/**
* 绑定今天的数据
*
* @param calendarItemView
* @param localDate
* @param selectedDateList
*/
public abstract void onBindToadyView(View calendarItemView, LocalDate localDate, List<LocalDate> selectedDateList);

/**
* 绑定除今天的当月数据
*
* @param calendarItemView
* @param localDate
* @param selectedDateList
*/
public abstract void onBindCurrentMonthOrWeekView(View calendarItemView, LocalDate localDate, List<LocalDate> selectedDateList);

/**
* 绑定上下月的数据 周日历可不用实现
*
* @param calendarItemView
* @param localDate
* @param selectedDateList
*/
public abstract void onBindLastOrNextMonthView(View calendarItemView, LocalDate localDate, List<LocalDate> selectedDateList);

/**
* 绑定不可用的日期数据,和方法setDateInterval(startFormatDate, endFormatDate)对应,
* 如果没有使用setDateInterval设置日期范围 此方法不用实现
*
* @param calendarItemView
* @param localDate
*/
public void onBindDisableDateView(View calendarItemView, LocalDate localDate) {

}
73 changes: 73 additions & 0 deletions CalendarPainter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@




### CalendarPainter


```
日历绘制接口,绘制的所有内容通过这个接口完成,实现这个类可实现自定义的日历界面,
参数中的 rectF 是文字位置的矩形对象
日历内部内置了一个 InnerPainter ,各个属性也是这个绘制类的,如果自定义 CalendarPainter ,则这些属性都不适用
InnerPainter 实现了设置圆点、替换农历等方法,还可以实现更多方法,如多选,多标记等,
/**
* 绘制月日历或这日历背景,如数字背景等
*
* @param iCalendarView ICalendarView 日历页面,可判断是月日历或者周日历
* @param canvas
* @param rectF
* @param localDate
* @param totalDistance 滑动的全部距离
* @param currentDistance 当前位置的距离
*/
void onDrawCalendarBackground(ICalendarView iCalendarView, Canvas canvas, RectF rectF, LocalDate localDate, int totalDistance, int currentDistance);
/**
* 绘制今天的日期
*
* @param canvas
* @param rectF
* @param localDate
* @param selectedDateList 全部选中的日期集合
*/
void onDrawToday(Canvas canvas, RectF rectF, LocalDate localDate, List<LocalDate> selectedDateList);
/**
* 绘制当前月或周的日期
*
* @param canvas
* @param rectF
* @param localDate
* @param selectedDateList 全部选中的日期集合
*/
void onDrawCurrentMonthOrWeek(Canvas canvas, RectF rectF, LocalDate localDate, List<LocalDate> selectedDateList);
/**
* 绘制上一月,下一月的日期,周日历不用实现
*
* @param canvas
* @param rectF
* @param localDate
* @param selectedDateList 全部选中的日期集合
*/
void onDrawLastOrNextMonth(Canvas canvas, RectF rectF, LocalDate localDate, List<LocalDate> selectedDateList);
/**
* 绘制不可用的日期,和方法setDateInterval(startFormatDate, endFormatDate)对应,
* 如果没有使用setDateInterval设置日期范围 此方法不用实现
*
* @param canvas
* @param rectF
* @param localDate
*/
void onDrawDisableDate(Canvas canvas, RectF rectF, LocalDate localDate);
实现接口 CalendarPainter,分别重写以上几个方法,setCalendarPainter(calendarPainter)即可实现自定义日历界面
```
34 changes: 11 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
- 支持自定义日历页面
- 支持内部TargetView为任意View
- 支持日历拉伸功能
- 支持适配器模式自定义日历

## 效果图
|Miui9Calendar|Miui10Calendar|EmuiCalendar|
Expand Down Expand Up @@ -52,7 +53,7 @@
implementation 'com.necer.ncalendar:ncalendar:4.3.8'
implementation 'com.necer.ncalendar:ncalendar:4.3.9' 项目升级到androidx
implementation 'com.necer.ncalendar:ncalendar:4.4.0' 项目升级到androidx
```

Expand Down Expand Up @@ -273,36 +274,22 @@ innerPainter.setStretchStrMap(strMap);



### CalendarPainter
### 自定义

## 项目提供两种方式自定义,Canvas绘制和适配器传入View,两种方式都能实现,方法类似,具体参见下面的链接

- [ 绘制接口 CalendarPainter](https://github.com/yannecer/NCalendar/blob/master/CalendarPainter.md)
- [适配器抽象类 CalendarAdapter](https://github.com/yannecer/NCalendar/blob/master/CalendarAdapter.md)
```
日历绘制接口,绘制的所有内容通过这个接口完成,实现这个类可实现自定义的日历界面,
参数中的 rectF 是文字位置的矩形对象
日历内部内置了一个 InnerPainter ,各个属性也是这个绘制类的,如果自定义 CalendarPainter ,则这些属性都不适用
InnerPainter 实现了设置圆点、替换农历等方法,还可以实现更多方法,如多选,多标记等,
写好之后调用下面的方法设置、两中方式取其一,如果同时设置,后面设置的生效
//绘制月日历或这日历背景,如数字背景等
void onDrawCalendarBackground(CalendarView calendarView, Canvas canvas, RectF rectF, LocalDate localDate, int totalDistance, int currentDistance);
//绘制今天的日期
void onDrawToday(Canvas canvas, RectF rectF, LocalDate localDate, List<LocalDate> selectedDateList);
//绘制当前月或周的日期
void onDrawCurrentMonthOrWeek(Canvas canvas, RectF rectF, LocalDate localDate, List<LocalDate> selectedDateList);
//绘制上一月,下一月的日期,周日历不用实现
void onDrawLastOrNextMonth(Canvas canvas, RectF rectF, LocalDate localDate, List<LocalDate> selectedDateList);
//绘制不可用的日期,和方法setDateInterval(startFormatDate, endFormatDate)对应 如果没有使用setDateInterval设置日期范围 此方法不用实现
void onDrawDisableDate(Canvas canvas, RectF rectF, LocalDate localDate);
CalendarPainter ---> setCalendarPainter(CalendarPainter calendarPainter);
CalendarAdapter ---> setCalendarAdapter(CalendarAdapter calendarAdapter);
```

实现接口 CalendarPainter,分别重写以上几个方法,setCalendarPainter(calendarPainter)即可实现自定义日历界面

```

### CalendarDate
```
Expand Down Expand Up @@ -402,6 +389,7 @@ CalendarDate calendarDate = CalendarUtil.getCalendarDate(LocalDate localDate);


## 更新日志
* 4.4.0<br/> 新增适配器模式自定义页面
* 4.3.8<br/> 新增月日历上下月是否可点击的属性 isLastNextMonthClickEnable
* 4.3.7<br/> 修复选中月初月末,实际月份回调bug
* 4.3.6<br/> 增加数字背景以及渐变效果
Expand Down

0 comments on commit 8c37a9a

Please sign in to comment.