{"adoption": {"forks": 660, "observed_at": "2026-08-28T04:08:30.975349+00:00", "stars": 3978}, "canonical_url": "https://ross.abutalabs.com/products/twinklingrefreshlayout", "card": {"archived": false, "artifact_type": "library", "description": "RefreshLayout that support for OverScroll and better than iOS.  支持下拉刷新和上拉加载的RefreshLayout,自带越界回弹效果，支持RecyclerView,AbsListView,ScrollView,WebView", "domain": ["mobile-development", "android-tools"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["lcodecorex/TwinklingRefreshLayout"], "name": "lcodecorex/TwinklingRefreshLayout", "platform": ["jvm"], "pushed_at": "2023-03-27T03:44:19+00:00", "repo": "lcodecorex/TwinklingRefreshLayout", "stars": 3978, "tags": ["pull-to-refresh", "load-more", "overscroll", "recyclerview", "webview", "android-layout", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["add pull-to-refresh to a RecyclerView in Android", "implement load-more pagination in a ListView", "add iOS-like overscroll bounce effect to Android scroll views", "customize refresh header animations for WebView", "support NestedScroll and CoordinatorLayout with refresh layouts"], "what_it_is": "TwinklingRefreshLayout is an Android pull-to-refresh and load-more layout library that wraps any scrollable view (RecyclerView, ListView, ScrollView, WebView) with customizable refresh headers and overscroll bounce effects. It extends the SwipeRefreshLayout concept with low coupling and support for NestedScroll and CoordinatorLayout.", "when_to_avoid": ["the project is marked deprecated, so prefer actively maintained alternatives like SwipeRefreshLayout or SmartRefreshLayout", "you are building for non-Android platforms", "you need Jetpack Compose-based pull-to-refresh"], "when_to_choose": ["you need pull-to-refresh and load-more for any scrollable Android view", "you want customizable, smooth overscroll animations", "you need a low-coupling ViewGroup-based refresh solution"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/twinklingrefreshlayout", "repo": "lcodecorex/TwinklingRefreshLayout", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "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:08:30.975349+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:30.975349+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:24:18.542618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f7a75095f780e30cd7ae81e5e88233407f7c1d7c8aa63c0d69eb35118782d1f9", "fetched_at": "2026-08-28T04:08:30.975349+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lcodecorex/TwinklingRefreshLayout"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3836, "days_push": 1255, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}