{"adoption": {"forks": 472, "observed_at": "2026-08-28T04:08:28.193200+00:00", "stars": 3884}, "canonical_url": "https://ross.abutalabs.com/products/backgroundlibrary", "card": {"archived": false, "artifact_type": "library", "description": "A framework for directly generating shape through Tags, no need to write shape.xml again（通过标签直接生成shape，无需再写shape.xml）", "domain": ["mobile-development", "android-tools", "frontend"], "enriched": true, "function": ["ui-components", "templating"], "health_score": 99, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["JavaNoober/BackgroundLibrary"], "name": "JavaNoober/BackgroundLibrary", "platform": [], "pushed_at": "2026-08-15T19:51:19+00:00", "repo": "JavaNoober/BackgroundLibrary", "stars": 3884, "tags": ["android", "drawable", "shape", "selector", "xml-attributes", "ui-styling", "jetpack", "androidx", "mobile"], "topics": ["shape", "shape-selector", "selector", "drawable", "xml", "stroke", "android"], "urls": [], "use_cases": ["generate android shape drawables without xml files", "set rounded corners and borders on views via attributes", "replace shape.xml with inline view attributes", "create selector drawables directly in layout xml", "add gradient strokes to android views", "style android backgrounds without drawable resources"], "what_it_is": "An Android library that lets developers generate shape and selector drawables directly via XML tag attributes (bl_*) on views, eliminating the need to write separate shape.xml files. It supports corners, solid colors, strokes, gradients, and state selectors seamlessly with native views.", "when_to_avoid": ["you need complex, programmatic, or highly dynamic drawable logic", "you prefer explicit drawable resource files for design-system consistency", "your team relies on Jetpack Compose rather than XML layouts"], "when_to_choose": ["you frequently write shape.xml/selector files for simple backgrounds in Android", "you want to reduce drawable resource file boilerplate in layouts", "your project uses AndroidX or support libraries and needs inline background styling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/backgroundlibrary", "repo": "JavaNoober/BackgroundLibrary", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "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:28.193200+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:28.193200+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:25:40.842272+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3c8315ed19a5ca35dd9734e9b09e7a9f126d19da6d7ad9e36ef416998ea933c", "fetched_at": "2026-08-28T04:08:28.193200+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JavaNoober/BackgroundLibrary"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 66}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2915, "days_push": 18, "days_rel": 18, "gap_med": null, "n_releases_24m": 1}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}