自定义日历--RCalendarView
2018-10-17 本文已影响24人
剑小河
需求
前段时间公司项目中,需要自己做个日历,最近抽空简化了一下,不过扩展性很强,做了个Demo。
这是效果图
日历演示.gif
思路
日历示意图.jpg- 把日历拆分成WeekView(橘色)、MonthView(绿色)、DayView(紫色)三个部分;
- WeekView是为了标记每天是周几,所以位置不变,单个DayView便是一天,这个有什么个人需要可以自己自定义,本月以及前后月的一些DayView组成MonthView;
- MonthView配合使用无限新增的ViewPager:InfiniteViewPager,自称完整的RCalendarView。
分拆介绍
WeekView
WeekView是为了标记每天是周几,所以位置不变,不多介绍了。
DayView
一个单日的样式,具体自己右什么需求,建议下载源码修改。
MonthView
MonthView继承RecyclerView是实现的,根据当月应当显示的天数计算出Item的个数,每个Item使用DayView。
InfiniteViewPager
参看InfiniteViewPager的介绍博客InfiniteViewPager
使用
<com.riverlet.lib.calendar.RCalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" />
RCalendarView calendarView = findViewById(R.id.calendarView);
实现翻页显示当前月份回调
calendarView.setOnCurrentMonthChangeCallback(new RCalendarView.OnCurrentMonthChangeCallback() {
@Override
public void onCurrentMonthChange(Month month) {
monthText.setText(month.toString());
}
});
源码及Demo安装包
源码:RiverletCalendar
Demo安装包:app-debug.apk