自定義日曆--RCalendarView
需求
前段時間公司專案中,需要自己做個日曆,最近抽空簡化了一下,不過擴充套件性很強,做了個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安裝包
原始碼: ofollow,noindex">RiverletCalendar
Demo安裝包: app-debug.apk