{"id":22551866,"url":"https://github.com/xuemomo/cslayout","last_synced_at":"2025-07-08T00:33:35.813Z","repository":{"id":166371266,"uuid":"142139333","full_name":"XueMoMo/CSLayout","owner":"XueMoMo","description":"从新上传到github","archived":false,"fork":false,"pushed_at":"2021-04-20T16:55:27.000Z","size":2583,"stargazers_count":13,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T03:39:15.696Z","etag":null,"topics":["animator-android","corner-radius","shadow"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XueMoMo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-24T09:54:47.000Z","updated_at":"2022-10-09T13:55:09.000Z","dependencies_parsed_at":"2023-06-26T08:16:22.892Z","dependency_job_id":null,"html_url":"https://github.com/XueMoMo/CSLayout","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/XueMoMo/CSLayout","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XueMoMo%2FCSLayout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XueMoMo%2FCSLayout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XueMoMo%2FCSLayout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XueMoMo%2FCSLayout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XueMoMo","download_url":"https://codeload.github.com/XueMoMo/CSLayout/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XueMoMo%2FCSLayout/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264169163,"owners_count":23567263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animator-android","corner-radius","shadow"],"created_at":"2024-12-07T17:15:01.016Z","updated_at":"2025-07-08T00:33:35.802Z","avatar_url":"https://github.com/XueMoMo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSLayout\r\n\r\n  \u003e1.一个支持所有View圆角的库 当然不仅仅是圆角  同时支持单独配置四个角圆角大小 四边阴影颜色及长度四边剪切长度\r\n\r\n  \u003e2.扩展CSLayout 实现了一个共享元素的动画效果不同于Android官方的共享动画 支持圆角变换支持自定义传入参数 自定义Animator效果\r\n  关于动画部分 查看 [https://www.jianshu.com/p/001e6cd66bf9](https://www.jianshu.com/p/001e6cd66bf9)\r\n  \r\n![圆角和阴影效果](/demoImg/1023565322.jpg)\r\n\r\n# 使用方式 \r\n### 1 将cslibrary 添加到项目 \r\n#### v1.1.1 之前 \r\n\r\n      Step 1. Add it in your root build.gradle at the end of repositories:\r\n\r\n                allprojects {\r\n                  repositories {\r\n                    ...\r\n                    maven { url 'https://jitpack.io' }\r\n                  }\r\n                }\r\n\r\n      Step 2. Add the dependency\r\n\r\n                dependencies {\r\n                        implementation 'com.github.XueMoMo:CSLayout:v1.1.1'\r\n                }\r\n#### v1.1.5 之后  [ ![Download](https://api.bintray.com/packages/xuemomo/android/CSLayout/images/download.svg?version=1.1.6) ](https://bintray.com/xuemomo/android/CSLayout/1.1.6/link)\r\n        dependencies {\r\n            implementation 'com.github.XueMoMo:cslibrary:1.1.5'\r\n        }\r\n\r\n### 2.1 布局文件中使用  CSLayout\r\n\r\n        \u003ccom.eericxu.cslibrary.CSLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n            xmlns:app=\"http://schemas.android.com/apk/res-auto\"\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"350dp\"\r\n            app:cs_corner_overlay=\"false\"\r\n            app:cs_clip=\"20dp\"\r\n            app:cs_corner=\"20dp\"\r\n            app:cs_shadow_size=\"15dp\"\u003e\r\n            \u003cImageView\r\n                android:id=\"@+id/iv_cover\"\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"match_parent\"\r\n                android:scaleType=\"centerCrop\"\r\n                android:src=\"@mipmap/img_4\" /\u003e\r\n        \r\n        \r\n        \u003c/com.eericxu.cslibrary.CSLayout\u003e\r\n\r\n### 2.2 自定义布局使用  CSHelper\r\n          \r\n    val csHelper = CSHelper()\r\n    constructor(context: Context?) : super(context)\r\n    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {\r\n        csHelper.initAttr(this,context, attrs)\r\n    }\r\n    \r\n    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {\r\n        csHelper.initAttr(this,context, attrs)\r\n    }\r\n    var isDrawed = false\r\n    override fun draw(canvas: Canvas?) {\r\n        setLayerType(LAYER_TYPE_SOFTWARE,null)\r\n        isDrawed = true\r\n        csHelper.drawBefore(canvas,isInEditMode)\r\n        super.draw(canvas)\r\n        csHelper.drawAfter(canvas,isInEditMode)\r\n\r\n    }\r\n\r\n    override fun dispatchDraw(canvas: Canvas?) {\r\n        if (isDrawed)\r\n            super.dispatchDraw(canvas)\r\n        else {\r\n            csHelper.drawBefore(canvas,isInEditMode)\r\n            super.dispatchDraw(canvas)\r\n            csHelper.drawAfter(canvas,isInEditMode)\r\n        }\r\n    }\r\n\r\n\r\n    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {\r\n        super.onSizeChanged(w, h, oldw, oldh)\r\n        csHelper.onSizeChange(this,w, h)\r\n    }\r\n### 3 属性对照\r\n\r\n       \u003c!-- *公共属性* --\u003e\r\n    \u003c!--圆形--\u003e\r\n    \u003cattr name=\"cs_circle\" format=\"boolean\" /\u003e\r\n    \u003c!--全部圆角半径--\u003e\r\n    \u003cattr name=\"cs_corner\" format=\"integer|dimension\" /\u003e\r\n    \u003c!--针对各个角的圆角半径--\u003e\r\n    \u003cattr name=\"cs_corner_top_left\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_corner_top_right\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_corner_bottom_left\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_corner_bottom_right\" format=\"integer|dimension\" /\u003e\r\n\r\n    \u003c!-- 阴影--\u003e\r\n    \u003cattr name=\"cs_shadow_size\" format=\"integer|dimension\" /\u003e       //阴影长度\r\n    \u003cattr name=\"cs_shadow_color\" format=\"color\" /\u003e                  //阴影颜色\r\n    //四边阴影大小\r\n    \u003cattr name=\"cs_shadow_size_left\" format=\"integer|dimension\" /\u003e  \r\n    \u003cattr name=\"cs_shadow_size_top\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_shadow_size_right\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_shadow_size_bottom\" format=\"integer|dimension\" /\u003e\r\n\r\n    \u003c!--裁切大小--\u003e\r\n    \u003cattr name=\"cs_clip\" format=\"integer|dimension\" /\u003e\r\n    //四边的裁切大小\r\n    \u003cattr name=\"cs_clip_left\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_clip_top\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_clip_right\" format=\"integer|dimension\" /\u003e\r\n    \u003cattr name=\"cs_clip_bottom\" format=\"integer|dimension\" /\u003e\r\n\r\n    \u003c!--覆盖模式 or 裁切模式--\u003e\r\n    \u003cattr name=\"cs_corner_overlay\" format=\"boolean\" /\u003e//false 为覆盖模式 默认覆盖模式   true 裁切模式\r\n    \u003cattr name=\"cs_corner_overlay_color\" format=\"color\" /\u003e  //覆盖模式时 覆盖的颜色\r\n    \r\n\r\n# 注意: \r\n\r\n ## 阴影是绘制在裁切的边缘上 \r\n ## 阴影长度按最大阴影大小绘制 通过调整绘制区域控制各边的阴影长度 \r\n 所以要设置阴影需要先设置裁切大小\r\n  \r\n  cs_clip \u003e= cs_shadow_size\r\n  cs_clip_left \u003e= cs_shadow_size_left\r\n  cs_clip_top \u003e= cs_shadow_size_top\r\n  cs_clip_right \u003e= cs_shadow_size_right\r\n  cs_clip_bottom \u003e= cs_shadow_size_bottom\r\n  \r\n# [LICENSE](/LICENSE)  \r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuemomo%2Fcslayout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxuemomo%2Fcslayout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuemomo%2Fcslayout/lists"}