{"adoption": {"forks": 181, "observed_at": "2026-08-28T04:05:59.273607+00:00", "stars": 1959}, "canonical_url": "https://ross.abutalabs.com/products/rwidgethelper", "card": {"archived": false, "artifact_type": "library", "description": "Android UI 快速开发，专治原生控件各种不服", "domain": ["mobile-development", "android-tools", "web-design"], "enriched": true, "function": ["ui-components", "frontend-framework"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["RuffianZhong/RWidgetHelper"], "name": "RuffianZhong/RWidgetHelper", "platform": ["jvm"], "pushed_at": "2024-02-21T05:57:40+00:00", "repo": "RuffianZhong/RWidgetHelper", "stars": 1959, "tags": ["android-ui", "custom-views", "drawable", "shadow", "ripple", "rounded-corners", "gradient-background", "selector-states", "ui-kit", "android"], "topics": ["state", "selector", "corner", "circle", "drawableleft", "textview", "imageview", "gradient", "shape", "drawablewithtext", "ripperdrawable", "ripper", "shadow", "shadowlayout", "shadowview", "shadowdrawable", "roundedimageview", "circleimageview", "clip", "cliplayout"], "urls": [], "use_cases": ["add rounded corners and borders to android views without drawable xml", "create gradient background buttons in android", "add shadow to android views and layouts", "implement pressed/selected/disabled state styles on android widgets", "add ripple effect to custom android views", "make circular or rounded imageview in android", "clip children to rounded layout in android"], "what_it_is": "An Android UI library that provides custom views (TextView, ImageView, layouts) inheriting native widgets, with XML attributes for rounded corners, borders, gradient backgrounds, state selectors, shadows, and ripple effects. It aims to speed up Android UI development by eliminating boilerplate drawable XML files.", "when_to_avoid": ["you build UI exclusively with Jetpack Compose", "you need Material Design component behaviors rather than simple styling", "you require a maintained library with an explicit license and active support"], "when_to_choose": ["you want to style native Android widgets via XML attributes without writing shape/selector drawables", "you need shadows, ripples, gradients, and state-based backgrounds quickly in a Java Android project"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rwidgethelper", "repo": "RuffianZhong/RWidgetHelper", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "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:05:59.273607+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.273607+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:05:57.648612+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b7af116e7d9adce67f954fe28a46a5a9f819e32a31cc9b6a64235d6dea0936fd", "fetched_at": "2026-08-28T04:05:59.273607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/RuffianZhong/RWidgetHelper"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3051, "days_push": 924, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}