{"adoption": {"forks": 1841, "observed_at": "2026-08-28T04:10:31.003789+00:00", "stars": 9396}, "canonical_url": "https://ross.abutalabs.com/products/calendarview", "card": {"archived": false, "artifact_type": "library", "description": "RecyclerView? ListView or ViewGroup? No, it's Canvas! Ultra performance and free customization interface! Vertical and horizontal, Fast rendering and extremely low memory.  Android上一个优雅、万能自定义UI、仿iOS、自定义动画，支持垂直、水平方向切换、支持周视图、自定义周起始、性能高效的日历控件，热插拔实现UI定制！Canvas绘制，渲染速度快、占用内存低，你真的想不到日历居然还可以如此优雅。", "domain": ["mobile-development", "cross-platform"], "enriched": true, "function": ["ui-components", "graphics"], "health_score": 64, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["huanghaibin-dev/CalendarView"], "name": "huanghaibin-dev/CalendarView", "platform": [], "pushed_at": "2025-12-04T03:09:32+00:00", "repo": "huanghaibin-dev/CalendarView", "stars": 9396, "tags": ["calendar", "canvas-rendering", "date-picker", "java", "androidx", "android"], "topics": ["calendarview", "calendar-component", "calendar-view", "calendar-widget", "calendar", "calendar-api", "android"], "urls": [], "use_cases": ["add a calendar picker to an Android app", "build a schedule view with month and week switching", "create an iOS-style calendar on Android", "render a year view calendar with range selection", "customize calendar UI with custom markers and animations", "display a low-memory calendar in a scrolling list"], "what_it_is": "A high-performance Android calendar UI library rendered entirely with Canvas instead of RecyclerView or ListView. It supports vertical and horizontal switching, week and month views, custom week start, custom animations, and hot-pluggable UI customization with fast rendering and low memory usage.", "when_to_avoid": ["you need a cross-platform (Flutter/React Native) calendar", "you need features from versions after 3.7.1, which are no longer open source", "you need a full scheduling or event-management backend, not just a UI component"], "when_to_choose": ["you need a highly customizable, performant calendar view on Android", "you want month/week/year views with smooth vertical and horizontal switching", "you need range selection or custom date markers", "memory and rendering performance matter for large date ranges"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/calendarview", "repo": "huanghaibin-dev/CalendarView", "role": "main", "score": 48}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.003789+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:22:11.488434+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e9293cfba681de2d57ed46ce32f82387a9ce77f4bd4d76b0128c415162d29d9", "fetched_at": "2026-08-28T04:10:31.003789+00:00", "kind": "readme", "missing": false, "url": "https://github.com/huanghaibin-dev/CalendarView"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 55, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3462, "days_push": 272, "days_rel": 572, "gap_med": null, "n_releases_24m": 1}, "score": 48, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}