{"id":18565070,"url":"https://github.com/jenly1314/drawboard","last_synced_at":"2025-10-24T14:45:34.629Z","repository":{"id":57727809,"uuid":"433334565","full_name":"jenly1314/DrawBoard","owner":"jenly1314","description":":art: DrawBoard 是一个自定义 View实现的画板；方便对图片进行编辑和各种涂鸦相关操作","archived":false,"fork":false,"pushed_at":"2024-09-10T15:36:08.000Z","size":13006,"stargazers_count":82,"open_issues_count":0,"forks_count":21,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-28T10:51:52.957Z","etag":null,"topics":["android","custom-view","doodl-view","doodling","draw-board-view","drawboard","drawboardview","drawing","drawing-library","drawingboard","graffiti","masai","mspaint"],"latest_commit_sha":null,"homepage":"https://jenly1314.github.io/DrawBoard/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jenly1314.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2021-11-30T07:28:11.000Z","updated_at":"2025-02-18T02:02:54.000Z","dependencies_parsed_at":"2024-03-18T17:30:48.115Z","dependency_job_id":"e04c32fb-dc54-4186-bbaf-a13768361e6c","html_url":"https://github.com/jenly1314/DrawBoard","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenly1314%2FDrawBoard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenly1314%2FDrawBoard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenly1314%2FDrawBoard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenly1314%2FDrawBoard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jenly1314","download_url":"https://codeload.github.com/jenly1314/DrawBoard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243769980,"owners_count":20345217,"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":["android","custom-view","doodl-view","doodling","draw-board-view","drawboard","drawboardview","drawing","drawing-library","drawingboard","graffiti","masai","mspaint"],"created_at":"2024-11-06T22:17:35.675Z","updated_at":"2025-10-24T14:45:34.623Z","avatar_url":"https://github.com/jenly1314.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DrawBoard\n\n![Image](app/src/main/ic_launcher-playstore.png)\n\n[![MavenCentral](https://img.shields.io/maven-central/v/com.github.jenly1314/drawboard?logo=sonatype)](https://repo1.maven.org/maven2/com/github/jenly1314/DrawBoard)\n[![JitPack](https://img.shields.io/jitpack/v/github/jenly1314/DrawBoard?logo=jitpack)](https://jitpack.io/#jenly1314/DrawBoard)\n[![CI](https://img.shields.io/github/actions/workflow/status/jenly1314/DrawBoard/build.yml?logo=github)](https://github.com/jenly1314/DrawBoard/actions/workflows/build.yml)\n[![Download](https://img.shields.io/badge/download-APK-brightgreen?logo=github)](https://raw.githubusercontent.com/jenly1314/DrawBoard/master/app/release/app-release.apk)\n[![API](https://img.shields.io/badge/API-21%2B-brightgreen?logo=android)](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)\n[![License](https://img.shields.io/github/license/jenly1314/DrawBoard?logo=open-source-initiative)](https://opensource.org/licenses/mit)\n\n\nDrawBoard 是一个自定义 View实现的画板；方便对图片进行编辑和各种涂鸦相关操作。\n\n* 主要支持的一些操作：撤销、恢复、清空、缩放；\n* 主要支持的绘制模式：画路径、画点、画直线、画矩形、画椭圆、画圆、画文字、画图片、橡皮擦、马赛克等。\n\n## 效果展示\n![Image](GIF.gif)\n\n\u003e 你也可以直接下载 [演示App](https://raw.githubusercontent.com/jenly1314/DrawBoard/master/app/release/app-release.apk) 体验效果\n\n## 引入\n\n### Gradle:\n\n1. 在Project的 **build.gradle** 或 **setting.gradle** 中添加远程仓库\n\n    ```gradle\n    repositories {\n        //...\n        mavenCentral()\n    }\n    ```\n\n2. 在Module的 **build.gradle** 中添加依赖项\n\n    ```gradle\n    implementation 'com.github.jenly1314:drawboard:1.1.0'\n    ```\n## 使用\n\n### DrawBoardView自定义属性说明\n| 属性 | 属性类型      | 默认值                                  | 属性说明          |\n| :------|:----------|:-------------------------------------|:--------------|\n| dbvMinZoom | float     | 1.0                                  | 支持最小的放大倍数     |\n| dbvMaxZoom | float     | 4.0                                  | 支持最大的放大倍数     |\n| dbvFit | boolean   | true                                 | 是否自适应         |\n| dbvDrawEnabled | boolean   | true                                 | 是否启用绘图        |\n| dbvZoomEnabled | boolean   | true                                 | 是否启用缩放        |\n| dbvShowTouchPoint | boolean   | true                                 | 是否显示触摸点       |\n| dbvShowSelectedBox | boolean   | false                                | 是否显示选中框       |\n| android:src | drawable  |                                      | 设置源图片（画板背景图层） |\n| dbvPaintColor | color     | \u003cfont color=#FF0000\u003e#FFFF0000\u003c/font\u003e | 画笔的颜色         |\n| dbvSelectedBoxColor | color     | \u003cfont color=#FF0000\u003e#AFFF0000\u003c/font\u003e | 选中框颜色         |\n| dbvTouchPointColor | color     | \u003cfont color=#CCCCCC\u003e#AFCCCCCC\u003c/font\u003e | 触摸点的颜色        |\n| dbvLineStrokeWidth | dimension | 2dp                                  | 画笔线条笔划宽度      |\n| dbvSelectedStrokeWidth | dimension | 1dp                                  | 选中时边框笔划宽度     |\n| dbvEraserStrokeWidth | dimension | 10dp                                 | 橡皮擦笔划宽度       |\n| dbvMosaicStrokeWidth | dimension | 10dp                                 | 马赛克比笔划宽度      |\n| dbvZoomPointStrokeWidth | dimension | 6dp                                  | 缩放点笔划宽度       |\n| dbvDrawTextSize | dimension | 15sp                                 | 绘制文本的字体大小     |\n| dbvDrawTextBold | boolean   | false                                | 绘制文本是否是粗体     |\n| dbvDrawTextUnderline | boolean   | false                                | 绘制文本是否需要下划线   |\n| dbvTouchTolerance | float     | 4.0                                  | 触摸时允许的容差值     |\n| dbvTouchPointRatio | float     | 1.2                                  | 触摸点的比例        |\n| dbvDrawLineArrow | boolean   | false                                | 绘制直线时是否带箭头    |\n| dbvLineArrowSize | dimension   | 6dp                                  | 绘制直线时的箭头大小    |\n\n### 示例\n\n布局示例\n```xml\n\n    \u003ccom.king.drawboard.view.DrawBoardView\n        android:id=\"@+id/drawBoardView\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\" /\u003e\n\n```\n### 说明\n\n主要支持的绘制模式\n```kotlin\n\n/**\n * 绘制路径\n */\nDrawMode.DRAW_PATH\n/**\n * 绘制点\n */\nDrawMode.DRAW_POINT\n/**\n * 绘制线\n */\nDrawMode.DRAW_LINE\n/**\n * 绘制矩形\n */\nDrawMode.DRAW_RECT\n/**\n * 绘制椭圆\n */\nDrawMode.DRAW_OVAL\n/**\n * 绘制圆\n */\nDrawMode.DRAW_CIRCLE\n/**\n * 绘制文本\n */\nDrawMode.DRAW_TEXT\n/**\n * 绘制图片\n */\nDrawMode.DRAW_BITMAP\n/**\n * 橡皮擦\n */\nDrawMode.ERASER\n/**\n * 马赛克\n */\nDrawMode.MOSAIC\n\n```\n\u003e 如果以上操作不完全满足你的需求，`DrawBoard`对外还提供了很多可定制化的配置（例如：自实现一个 [`Draw`](drawboard/src/main/java/com/king/drawboard/draw/Draw.java)）。\n\n```kotlin\n/**\n * 如设置绘制模式为：DrawMode.DRAW_PATH\n */\ndrawBoardView.setDrawMode(DrawMode.DRAW_PATH)\n```\n\n主要常用的一些方法\n```kotlin\n/**\n * 撤销一步\n */\ndrawBoardView.undo()\n/**\n * 恢复一步\n */\ndrawBoardView.redo()\n/**\n * 清除画布\n */\ndrawBoardView.clear()\n/**\n * 改变绘制模式\n */\ndrawBoardView.setDrawMode(drawMode)\n/**\n * 设置画笔颜色\n */\ndrawBoardView.setPaintColor(paintColor)\n/**\n * 设置画笔线条笔划宽度\n */\ndrawBoardView.setLineStrokeWidth(lineStrokeWidth)\n/**\n * 设置橡皮擦笔划宽度\n */\ndrawBoardView.setEraserStrokeWidth(eraserStrokeWidth)\n/**\n * 设置马赛克笔划宽度\n */\ndrawBoardView.setMosaicStrokeWidth(mosaicStrokeWidth)\n/**\n * 通过代码进行绘制\n */\ndrawBoardView.draw(draw)\n/**\n * 设置图片（画板背景图层）\n */\ndrawBoardView.setImageBitmap(bitmap)\n/**\n * 获取结果图片（画板背景图层和画板图层合并后的图片）\n */\ndrawBoardView.getResultBitmap()\n\n```\n\n更多使用详情，请查看[app](app)中的源码使用示例或直接查看[API帮助文档](https://jenly1314.github.io/DrawBoard/api/)\n\n## 相关推荐\n\n- [ImageViewer](https://github.com/jenly1314/ImageViewer) 一个图片查看器，一般用来查看图片详情或查看大图时使用。\n- [SpinCounterView](https://github.com/jenly1314/SpinCounterView) 一个类似码表变化的旋转计数器动画控件。\n- [CounterView](https://github.com/jenly1314/CounterView) 一个数字变化效果的计数器视图控件。\n- [RadarView](https://github.com/jenly1314/RadarView) 一个雷达扫描动画后，然后展示得分效果的控件。\n- [SuperTextView](https://github.com/jenly1314/SuperTextView) 一个在TextView的基础上扩展了几种动画效果的控件。\n- [LoadingView](https://github.com/jenly1314/LoadingView) 一个圆弧加载过渡动画，圆弧个数，大小，弧度，渐变颜色，完全可配。\n- [WaveView](https://github.com/jenly1314/WaveView) 一个水波纹动画控件视图，支持波纹数，波纹振幅，波纹颜色，波纹速度，波纹方向等属性完全可配。\n- [GiftSurfaceView](https://github.com/jenly1314/GiftSurfaceView) 一个适用于直播间送礼物拼图案的动画控件。\n- [FlutteringLayout](https://github.com/jenly1314/FlutteringLayout) 一个适用于直播间点赞桃心飘动效果的控件。\n- [DragPolygonView](https://github.com/jenly1314/DragPolygonView) 一个支持可拖动多边形，支持通过拖拽多边形的角改变其形状的任意多边形控件。\n- [CircleProgressView](https://github.com/jenly1314/CircleProgressView) 一个圆形的进度动画控件，动画效果纵享丝滑。\n- [ArcSeekBar](https://github.com/jenly1314/ArcSeekBar) 一个弧形的拖动条进度控件，配置参数完全可定制化。\n- [compose-component](https://github.com/jenly1314/compose-component) 一个Jetpack Compose的组件库；主要提供了一些小组件，便于快速使用。\n\n\u003c!-- end --\u003e\n\n## 版本日志\n\n#### v1.1.0：2024-3-18\n* 新增支持绘制马赛克\n* 绘制直线时，支持带箭头\n* 绘制图片或文字时，支持选中再次移动（限最近一次操作）\n* 对外提供更多绘制相关配置\n* 更新Gradle至v7.5\n\n#### [查看更多版本日志](CHANGELOG.md)\n\n---\n\n![footer](https://jenly1314.github.io/page/footer.svg)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenly1314%2Fdrawboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjenly1314%2Fdrawboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenly1314%2Fdrawboard/lists"}