{"adoption": {"forks": 425, "observed_at": "2026-08-28T04:08:15.871412+00:00", "stars": 3737}, "canonical_url": "https://ross.abutalabs.com/products/shadowlayout", "card": {"archived": false, "artifact_type": "library", "description": "可定制化阴影的万能阴影布局ShadowLayout 3.0 震撼上线。效果赶超CardView。阴影支持x,y轴偏移，支持阴影扩散程度，支持阴影圆角，支持单边或多边不显示阴影；控件支持动态设置shape和selector（项目里再也不用画shape了）；支持随意更改颜色值，支持随意更改颜色值，支持随意更改颜色值。重要的事情说三遍", "domain": ["mobile-development", "android-tools", "web-design"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 77, "homepage": null, "language": "Java", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["lihangleo2/ShadowLayout"], "name": "lihangleo2/ShadowLayout", "platform": [], "pushed_at": "2026-02-10T06:55:53+00:00", "repo": "lihangleo2/ShadowLayout", "stars": 3737, "tags": ["shadow-layout", "android-ui", "shape-drawable", "selector", "ripple-effect", "cardview-alternative", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["add customizable shadows to any Android view", "replace CardView with more flexible shadow control", "remove shape and selector drawable XML files from the project", "set per-corner rounded corners on views", "create buttons with pressed, selected, and ripple states without XML", "clip child views like video players to rounded corners"], "what_it_is": "An Android layout library that wraps any view to provide fully customizable shadows (color, offset, blur, corner radius, per-side hiding) as an alternative to CardView. It also replaces drawable XML files by supporting shape, selector, ripple, stroke, gradient backgrounds, and child view corner clipping programmatically.", "when_to_avoid": ["you are not building Android apps", "you only need standard Material card shadows that CardView already provides", "your project is still on ShadowLayout 2.0 APIs and migration to 3.0 is not feasible"], "when_to_choose": ["you need shadow control beyond what CardView offers, like per-side shadows or custom shadow colors", "you want to eliminate drawable XML files by defining shapes and selectors in code or attributes", "you need dynamic runtime changes to shadows, backgrounds, or button states"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/shadowlayout", "repo": "lihangleo2/ShadowLayout", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "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:15.871412+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.871412+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:29:09.577370+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1418439c7cc721ab510dc54dbd747253215c7ba400865bf68e5fd2906a8b78e4", "fetched_at": "2026-08-28T04:08:15.871412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihangleo2/ShadowLayout"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 66, "longevity": 100, "rhythm": 57}, "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": 2612, "days_push": 204, "days_rel": 204, "gap_med": 33.0, "n_releases_24m": 5}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}