Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jenly1314/dragpolygonview
:star: 一个支持可拖动多边形,可拖动多边形的角改变其形状的任意多边形控件
https://github.com/jenly1314/dragpolygonview
drag-polygon-view draw-polygons polygon polygons
Last synced: about 2 months ago
JSON representation
:star: 一个支持可拖动多边形,可拖动多边形的角改变其形状的任意多边形控件
- Host: GitHub
- URL: https://github.com/jenly1314/dragpolygonview
- Owner: jenly1314
- License: mit
- Created: 2020-10-19T09:00:26.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-06-20T10:27:45.000Z (7 months ago)
- Last Synced: 2024-06-21T01:13:45.655Z (7 months ago)
- Topics: drag-polygon-view, draw-polygons, polygon, polygons
- Language: Java
- Homepage:
- Size: 5.7 MB
- Stars: 30
- Watchers: 3
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DragPolygonView
[![Download](https://img.shields.io/badge/download-App-blue.svg)](https://raw.githubusercontent.com/jenly1314/DragPolygonView/master/app/release/app-release.apk)
[![JCenter](https://img.shields.io/badge/JCenter-1.0.2-46C018.svg)](https://bintray.com/beta/#/jenly/maven/dragpolygonview)
[![JitPack](https://jitpack.io/v/jenly1314/DragPolygonView.svg)](https://jitpack.io/#jenly1314/DragPolygonView)
[![CI](https://travis-ci.org/jenly1314/DragPolygonView.svg?branch=master)](https://travis-ci.org/jenly1314/DragPolygonView)
[![CircleCI](https://circleci.com/gh/jenly1314/DragPolygonView.svg?style=svg)](https://circleci.com/gh/jenly1314/DragPolygonView)
[![API](https://img.shields.io/badge/API-21%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=21)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/mit-license.php)DragPolygonView for Android 是一个支持可拖动多边形,支持通过拖拽多边形的角改变其形状的任意多边形控件。
## 特性说明
- [x] 支持添加多个任意多边形
- [x] 支持通过触摸多边形拖动改变其位置
- [x] 支持通过触摸多边形的角改变其形状
- [x] 支持点击、长按、改变等事件监听
- [x] 支持多边形单选或多选模式## Gif 展示
![Image](GIF.gif)> 你也可以直接下载 [演示App](https://raw.githubusercontent.com/jenly1314/DragPolygonView/master/app/release/app-release.apk) 体验效果
## 引入
### Gradle:
1. 在Project的 **build.gradle** 或 **setting.gradle** 中添加远程仓库
```gradle
repositories {
//...
mavenCentral()
maven { url 'https://jitpack.io' }
}
```2. 在Module的 **build.gradle** 里面添加引入依赖项
```gradle
implementation 'com.github.jenly1314:DragPolygonView:1.0.2'
```## 使用
### DragPolygonView 自定义属性说明
| 属性 | 值类型 | 默认值 | 说明 |
| :------| :------ | :------ | :------ |
| dpvStrokeWidth | float | 4 | 画笔描边的宽度 |
| dpvPointStrokeWidthMultiplier | float | 1.0 | 绘制多边形点坐标时基于画笔描边的宽度倍数 |
| dpvPointNormalColor | color |#FFE5574C| 多边形点的颜色 |
| dpvPointPressedColor | color | | 多边形点按下状态时的颜色 |
| dpvPointSelectedColor | color | | 多边形点选中状态时的颜色 |
| dpvLineNormalColor | color |#FFE5574C| 多边形边线的颜色 |
| dpvLinePressedColor | color | | 多边形边线按下状态的颜色 |
| dpvLineSelectedColor | color | | 多边形边线选中状态的颜色 |
| dpvFillNormalColor | color |#3FE5574C| 多边形填充的颜色 |
| dpvFillPressedColor | color |#7FE5574C| 多边形填充按下状态时的颜色 |
| dpvFillSelectedColor | color |#AFE5574C| 多边形填充选中状态时的颜色 |
| dpvAllowableOffsets | dimension | 16dp | 触点允许的误差偏移量 |
| dpvDragEnabled | boolean | true | 是否启用拖动多边形 |
| dpvChangeAngleEnabled | boolean | true | 是否启用多边形的各个角的角度支持可变 |
| dpvMultipleSelection | boolean | false | 是否是多选模式,默认:单选模式 |
| dpvClickToggleSelected | boolean | false | 是否点击就切换多边形的选中状态 |
| dpvAllowDragOutView | boolean | false | 是否允许多边形拖出视图范围 |
| dpvTextSize | dimension | 16sp | 是否允许多边形拖出视图范围 |
| dpvTextNormalColor | color |#FFE5574C| 多边形文本的颜色 |
| dpvTextPressedColor | color | | 多边形文本按下状态的颜色 |
| dpvTextSelectedColor | color | | 多边形文本选中状态的颜色 |
| dpvShowText | boolean | true | 是否显示多边形的文本 |
| dpvFakeBoldText | boolean | false | 多边形Text的字体是否为粗体 |### 示例
布局示例
```Xml
```代码示例
```Java
//添加多边形
dragPolygonView.addPolygon(Polygon polygon);
//添加多边形(多边形的各个点)
dragPolygonView.addPolygon(PointF... points);
//根据位置将多边形改为选中状态
dragPolygonView.setPolygonSelected(int position);
//改变监听
dragPolygonView.setOnChangeListener(OnChangeListener listener);
//点击监听
dragPolygonView.setOnPolygonClickListener(OnPolygonClickListener listener);
//长按监听
dragPolygonView.setOnPolygonLongClickListener(OnPolygonLongClickListener listener)```
更多使用详情,请查看[app](app)中的源码使用示例或直接查看 [API帮助文档](https://jitpack.io/com/github/jenly1314/DragPolygonView/latest/javadoc/)## 版本记录
#### v1.0.2:2020-12-2
* Polygon新增Text属性(可显示在多边形中间)#### v1.0.1:2020-10-23
* 新增点击和长按事件
* 新增选中相关状态#### v1.0.0:2020-10-19
* DragPolygonView初始版本## 赞赏
如果您喜欢DragPolygonView,或感觉DragPolygonView帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 :smiley:您也可以扫描下面的二维码,请作者喝杯咖啡 :coffee:
## 关于我
| 我的博客 | GitHub | Gitee | CSDN | 博客园 |
|:------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------|
| Jenly's Blog | jenly1314 | jenly1314 | jenly121 | jenly |## 联系我
| 微信公众号 | Gmail邮箱 | QQ邮箱 | QQ群 | QQ群 |
|:-------------|:---------------------------------------------------------------------------------|:----------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------|
| [Jenly666](http://weixin.qq.com/r/wzpWTuPEQL4-ract92-R) | jenly1314 | jenly1314 | 20867961 | 64020761 |