{"adoption": {"forks": 103, "observed_at": "2026-08-28T04:03:24.867691+00:00", "stars": 1057}, "canonical_url": "https://ross.abutalabs.com/products/shapeview", "card": {"archived": false, "artifact_type": "library", "description": "Shape 支持在布局中直接定义啦，支持设置阴影，文字渐变色，状态选择器", "domain": ["mobile-development", "android-tools", "frontend"], "enriched": true, "function": ["ui-components", "graphics"], "health_score": 86, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["getActivity/ShapeView"], "name": "getActivity/ShapeView", "platform": ["jvm"], "pushed_at": "2026-05-01T11:13:07+00:00", "repo": "getActivity/ShapeView", "stars": 1057, "tags": ["android-ui", "shape-drawable", "custom-views", "xml-attributes", "androidx", "gradient-text", "shadow-layout", "state-selector", "android", "mobile"], "topics": ["shapetextview", "shapeview", "shapebutton", "shapeframelayout", "shapelinearlayout", "shapeconstraintlayout", "shaperelativelayout", "supertextview", "backgroundlibrary", "shapeedittext", "shapeimageview", "shadowlayout", "android", "textview", "edittext", "recyclerview", "button", "shape"], "urls": [], "use_cases": ["define rounded button backgrounds directly in android xml layouts", "add shadows to android views without drawable files", "set gradient text color on android textview", "create state selector backgrounds for buttons in layout", "replace shape drawable xml resources with layout attributes", "style edittext and imageview shapes in android"], "what_it_is": "An Android UI library that lets developers define shape drawables (rectangles, ovals, gradients, shadows, state selectors) directly in XML layouts via custom views like ShapeButton, ShapeTextView, and ShapeEditText. It eliminates the need to write separate drawable resource files, with Java builder APIs for runtime changes.", "when_to_avoid": ["your project still uses the old Support libraries without migration plans", "you prefer Compose-based UI instead of XML layouts", "you need cross-platform UI components"], "when_to_choose": ["building Android apps that heavily use shape drawables and want less XML boilerplate", "you want shape, shadow, and gradient styling defined inline in layouts", "your project is on AndroidX and Java"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/shapeview", "repo": "getActivity/ShapeView", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "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:03:24.867691+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.867691+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:57:57.087193+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3c9cdf0c915ae0811467293938a1820155f95787ff23ca1a1bbd09457742e05d", "fetched_at": "2026-08-28T04:03:24.867691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/ShapeView"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 80, "longevity": 100, "rhythm": 69}, "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": 1873, "days_push": 124, "days_rel": 124, "gap_med": 65, "n_releases_24m": 6}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}