About this project

CalendarView is an Android calendar widget open-sourced by huanghaibin-dev. The author deliberately avoided conventional container approaches such as RecyclerView, ListView, or ViewGroup, and instead used direct Canvas drawing to achieve faster rendering speed and lower memory usage. The project is positioned as an "elegant, universal, freely customizable UI" calendar component, suitable for developers who need to embed calendar selection, schedule display, range selection, and similar scenarios in their apps. In terms of core features, the widget supports switching between vertical and horizontal browsing directions, supports week view and month view, allows customization of the first day of each week, and provides custom animations in an iOS-like style. UI customization uses a hot-swappable approach, allowing developers to replace view classes such as MonthView, WeekBar, WeekView, and YearView to achieve a variety of appearances, from minimalist styles to Chinese style, Meizu phone calendar style, colorful full style, progress bar style, galaxy style, and more. The README provides a large number of preview images. For usage, the project provides two dependency methods, Gradle and Maven: when using the support package, include com.haibin:calendarview:3.6.8; when using Androidx, include com.haibin:calendarview:3.7.1. It requires Android Studio 3.5 or above. The documentation also provides usage guides in English (QUESTION.md) and Chinese (QUESTION_ZH.md), and gives an example of ProGuard obfuscation rules for retaining the constructors of custom view classes. It should be noted that the author clearly states in the README that the final version open-sourced on GitHub is 3.7.1, and some source code, such as the vertical/horizontal switching calendar and the iOS-like calendar, is no longer open source. Therefore, subsequent advanced features may not be available in the open-source repository. The project is licensed under the Apache License 2.0 and can be used freely.