Android开发经验谈Android技术知识Android开发

自定义日历--RCalendarView

2018-10-17  本文已影响24人  剑小河

需求

前段时间公司项目中,需要自己做个日历,最近抽空简化了一下,不过扩展性很强,做了个Demo。

这是效果图


日历演示.gif

思路

日历示意图.jpg
  1. 把日历拆分成WeekView(橘色)、MonthView(绿色)、DayView(紫色)三个部分;
  2. WeekView是为了标记每天是周几,所以位置不变,单个DayView便是一天,这个有什么个人需要可以自己自定义,本月以及前后月的一些DayView组成MonthView;
  3. 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

上一篇下一篇

猜你喜欢

热点阅读