Skip to content

Commit 859f68c

Browse files
committedSep 2, 2021
新增cpvTickOffsetAngle属性
1 parent b8e84c4 commit 859f68c

File tree

10 files changed

+120
-62
lines changed

10 files changed

+120
-62
lines changed
 

‎README.md

+23-21
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[![Download](https://img.shields.io/badge/download-App-blue.svg)](https://raw.githubusercontent.com/jenly1314/CircleProgressView/master/app/release/app-release.apk)
44
[![JCenter](https://img.shields.io/badge/JCenter-1.1.2-46C018.svg)](https://bintray.com/beta/#/jenly/maven/circleprogressview)
5+
[![MavenCentral](https://img.shields.io/maven-central/v/com.github.jenly1314/circleprogressview)](https://repo1.maven.org/maven2/com/github/jenly1314/circleprogressview)
56
[![JitPack](https://jitpack.io/v/jenly1314/CircleProgressView.svg)](https://jitpack.io/#jenly1314/CircleProgressView)
67
[![CI](https://travis-ci.org/jenly1314/CircleProgressView.svg?branch=master)](https://travis-ci.org/jenly1314/CircleProgressView)
78
[![CircleCI](https://circleci.com/gh/jenly1314/CircleProgressView.svg?style=svg)](https://circleci.com/gh/jenly1314/CircleProgressView)
@@ -39,6 +40,7 @@ CircleProgressView for Android 是一个圆形的进度动画控件,动画效
3940
| cpvCirclePadding | dimension | 10dp | 外圆环刻度与内圆环间距 |
4041
| cpvTickSplitAngle | integer | 5 | 刻度间隔的角度大小 |
4142
| cpvBlockAngle | integer | 1 | 刻度的角度大小 |
43+
| cpvTickOffsetAngle | integer | 1 | 刻度偏移的角度大小 |
4244
| cpvTurn | boolean | false | 是否旋转 |
4345
| cpvCapRound | boolean | true | 是否是圆形线冒(圆角弧度) |
4446
| cpvLabelPaddingLeft | dimension |0dp| 文本居左边内间距 |
@@ -49,36 +51,32 @@ CircleProgressView for Android 是一个圆形的进度动画控件,动画效
4951

5052
## 引入
5153

52-
### Maven:
53-
```maven
54-
<dependency>
55-
<groupId>com.king.view</groupId>
56-
<artifactId>circleprogressview</artifactId>
57-
<version>1.1.2</version>
58-
<type>pom</type>
59-
</dependency>
60-
```
6154
### Gradle:
62-
```gradle
63-
implementation 'com.king.view:circleprogressview:1.1.2'
64-
```
6555

66-
### Lvy:
67-
```lvy
68-
<dependency org='com.king.view' name='circleprogressview' rev='1.1.2'>
69-
<artifact name='$AID' ext='pom'></artifact>
70-
</dependency>
71-
```
72-
73-
###### 如果Gradle出现compile失败的情况,可以在Project的build.gradle里面添加如下:(也可以使用上面的GitPack来complie)
56+
1. 在Project的 **build.gradle** 里面添加远程仓库
57+
7458
```gradle
7559
allprojects {
7660
repositories {
77-
maven { url 'https://dl.bintray.com/jenly/maven' }
61+
//...
62+
mavenCentral()
7863
}
7964
}
8065
```
8166

67+
2. 在Module的 **build.gradle** 里面添加引入依赖项
68+
```gradle
69+
implementation 'com.github.jenly1314:circleprogressview:1.1.3'
70+
71+
```
72+
73+
74+
以前发布至JCenter的版本
75+
76+
```gradle
77+
implementation 'com.king.view:circleprogressview:1.1.2'
78+
```
79+
8280
## 示例
8381

8482
布局示例
@@ -104,6 +102,10 @@ allprojects {
104102

105103
## 版本记录
106104

105+
#### v1.1.3:2021-9-2 (从v1.1.3开始发布至 MavenCentral)
106+
* 对外暴露更多getter和setter方法
107+
* 新增cpvTickOffsetAngle属性
108+
107109
#### v1.1.2:2020-12-2
108110
* 优化设置渐变色过程处理
109111

‎app/build.gradle

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ android {
2323

2424
dependencies {
2525
implementation fileTree(include: ['*.jar'], dir: 'libs')
26-
testImplementation deps.test.junit
27-
androidTestImplementation deps.test.runner
28-
androidTestImplementation deps.test.espresso
26+
testImplementation deps.junit
27+
androidTestImplementation deps.runner
28+
androidTestImplementation deps.espresso
2929

30-
implementation deps.support.appcompat
30+
implementation deps.appcompat
3131

3232
implementation project(':lib')
3333
}

‎build.gradle

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ buildscript {
44
apply from: 'versions.gradle'
55
repositories {
66
google()
7-
jcenter()
87
mavenCentral()
8+
jcenter()
99
}
1010

1111
dependencies {
12-
classpath 'com.android.tools.build:gradle:3.2.1'
13-
classpath 'com.novoda:bintray-release:0.9'
12+
classpath "com.android.tools.build:gradle:$versions.gradle"
13+
// classpath 'com.novoda:bintray-release:0.9.2'
14+
classpath "com.vanniktech:gradle-maven-publish-plugin:$versions.mavenPublish"
1415

1516
// NOTE: Do not place your application dependencies here; they belong
1617
// in the individual module build.gradle files
@@ -20,8 +21,8 @@ buildscript {
2021
allprojects {
2122
repositories {
2223
google()
23-
jcenter()
2424
mavenCentral()
25+
jcenter()
2526
}
2627
}
2728

‎gradle.properties

+18
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,21 @@ org.gradle.jvmargs = -Xmx1536m
1414
android.useAndroidX=true
1515
android.enableJetifier=true
1616

17+
VERSION_NAME=1.1.3
18+
VERSION_CODE=6
19+
GROUP=com.github.jenly1314
20+
21+
POM_DESCRIPTION=CircleProgressView for Android
22+
POM_URL=https://github.com/jenly1314/CircleProgressView
23+
POM_SCM_URL=https://github.com/jenly1314/CircleProgressView
24+
POM_SCM_CONNECTION=scm:git@github.com:jenly1314/CircleProgressView.git
25+
POM_SCM_DEV_CONNECTION=scm:git@github.com:jenly1314/CircleProgressView.git
26+
POM_LICENCE_NAME=The MIT License
27+
POM_LICENCE_URL=https://opensource.org/licenses/mit-license.php
28+
#POM_LICENCE_NAME=The Apache Software License, Version 2.0
29+
#POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
30+
POM_DEVELOPER_ID=jenly
31+
POM_DEVELOPER_NAME=Jenly Yu
32+
RELEASE_REPOSITORY_URL=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
33+
SNAPSHOT_REPOSITORY_URL=https://s01.oss.sonatype.org/content/repositories/snapshots/
34+
RELEASE_SIGNING_ENABLED=false

‎gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

‎lib/build.gradle

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
apply plugin: 'com.android.library'
2-
apply from: 'bintray.gradle'
2+
//apply from: 'bintray.gradle'
3+
apply plugin: "com.vanniktech.maven.publish"
34

45
android {
56
compileSdkVersion build_versions.compileSdk
@@ -28,8 +29,8 @@ android {
2829

2930
dependencies {
3031
implementation fileTree(include: ['*.jar'], dir: 'libs')
31-
testImplementation deps.test.junit
32-
androidTestImplementation deps.test.runner
33-
androidTestImplementation deps.test.espresso
32+
testImplementation deps.junit
33+
androidTestImplementation deps.runner
34+
androidTestImplementation deps.espresso
3435

3536
}

‎lib/gradle.properties

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
POM_NAME=CircleProgressView
2+
POM_ARTIFACT_ID=circleprogressview
3+
POM_PACKAGING=aar

‎lib/src/main/java/com/king/view/circleprogressview/CircleProgressView.java

+43-6
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ public class CircleProgressView extends View {
102102
*/
103103
private int mBlockAngle = 1;
104104

105+
/**
106+
* 刻度偏移的角度大小
107+
*/
108+
private float mTickOffsetAngle = 0;
109+
105110
/**
106111
* 总刻度数
107112
*/
@@ -243,6 +248,8 @@ private void init(Context context,AttributeSet attrs){
243248
mTickSplitAngle = a.getInt(attr,mTickSplitAngle);
244249
}else if(attr == R.styleable.CircleProgressView_cpvBlockAngle){
245250
mBlockAngle = a.getInt(attr,mBlockAngle);
251+
}else if(attr == R.styleable.CircleProgressView_cpvTickOffsetAngle){
252+
mTickOffsetAngle = a.getInt(attr,0);
246253
}else if(attr == R.styleable.CircleProgressView_cpvTurn){
247254
isTurn = a.getBoolean(attr,isTurn);
248255
}else if(attr == R.styleable.CircleProgressView_cpvCapRound){
@@ -352,7 +359,7 @@ private void drawArc(Canvas canvas){
352359
mPaint.setShader(null);
353360
mPaint.setColor(mNormalColor);
354361
//绘制外边框刻度
355-
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle, mBlockAngle, false, mPaint);
362+
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle + mTickOffsetAngle, mBlockAngle, false, mPaint);
356363
}
357364

358365
for (int i = currentBlockIndex; i < currentBlockIndex + currentBlockIndex; i++) {
@@ -363,7 +370,7 @@ private void drawArc(Canvas canvas){
363370
mPaint.setColor(mProgressColor);
364371
}
365372
//绘制外边框刻度
366-
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle, mBlockAngle, false, mPaint);
373+
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle + mTickOffsetAngle, mBlockAngle, false, mPaint);
367374
}
368375
}else{
369376
for (int i = 0; i < mTotalTickCount; i++) {
@@ -375,13 +382,13 @@ private void drawArc(Canvas canvas){
375382
mPaint.setColor(mProgressColor);
376383
}
377384
//绘制外边框刻度
378-
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle, mBlockAngle, false, mPaint);
385+
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle + mTickOffsetAngle, mBlockAngle, false, mPaint);
379386
} else if(mNormalColor != 0){
380387
//未选中的刻度
381388
mPaint.setShader(null);
382389
mPaint.setColor(mNormalColor);
383390
//绘制外边框刻度
384-
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle, mBlockAngle, false, mPaint);
391+
canvas.drawArc(rectF, i * (mBlockAngle + mTickSplitAngle) + mStartAngle + mTickOffsetAngle, mBlockAngle, false, mPaint);
385392
}
386393

387394
}
@@ -440,9 +447,9 @@ private void drawText(Canvas canvas){
440447
mTextPaint.setTextAlign(Paint.Align.CENTER);
441448

442449
Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
443-
// 计算文字高度 
450+
// 计算文字高度
444451
float fontHeight = fontMetrics.bottom - fontMetrics.top;
445-
// 计算文字baseline 
452+
// 计算文字baseline
446453
float textBaseX = getWidth() / 2 + mLabelPaddingLeft - mLabelPaddingRight;
447454
float textBaseY = getHeight() - (getHeight() - fontHeight) / 2 - fontMetrics.bottom + mLabelPaddingTop - mLabelPaddingBottom;
448455
if(isShowPercentText){//是否显示百分比
@@ -660,6 +667,36 @@ public String getLabelText() {
660667
return mLabelText;
661668
}
662669

670+
public boolean isShowLabel() {
671+
return isShowLabel;
672+
}
673+
674+
public boolean isShowPercentText() {
675+
return isShowPercentText;
676+
}
677+
678+
public boolean isShowTick() {
679+
return isShowTick;
680+
}
681+
682+
public boolean isTurn() {
683+
return isTurn;
684+
}
685+
686+
public boolean isCapRound() {
687+
return isCapRound;
688+
}
689+
690+
public void setShowLabel(boolean showLabel) {
691+
isShowLabel = showLabel;
692+
invalidate();
693+
}
694+
695+
public void setShowPercentText(boolean showPercentText) {
696+
isShowPercentText = showPercentText;
697+
invalidate();
698+
}
699+
663700
public void setLabelPaddingLeft(float labelPaddingLeft) {
664701
this.mLabelPaddingLeft = labelPaddingLeft;
665702
invalidate();

‎lib/src/main/res/values/attrs.xml

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<attr name="cpvCirclePadding" format="dimension"/>
1818
<attr name="cpvTickSplitAngle" format="integer"/>
1919
<attr name="cpvBlockAngle" format="integer"/>
20+
<attr name="cpvTickOffsetAngle" format="integer"/>
2021
<attr name="cpvTurn" format="boolean"/>
2122
<attr name="cpvCapRound" format="boolean"/>
2223
<attr name="cpvLabelPaddingLeft" format="dimension"/>

‎versions.gradle

+17-22
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//App
22
def app_version = [:]
3-
app_version.versionCode = 5
4-
app_version.versionName = "1.1.2"
3+
app_version.versionCode = 6
4+
app_version.versionName = "1.1.3"
55
ext.app_version = app_version
66

77
//build version
@@ -17,27 +17,22 @@ ext.deps = [:]
1717
// App dependencies
1818
def versions = [:]
1919
//support
20-
versions.supportLibrary = "1.0.0+"
21-
versions.constraintLayout = "1.1.3"
20+
versions.appcompat = "1.1.0"
21+
versions.constraintlayout = "1.1.3"
2222

23+
versions.mavenPublish = '0.13.0'
24+
versions.gradle = '3.6.1'
2325
//test
24-
versions.junit = "4.12"
25-
versions.runner = "1.1.2"
26-
versions.espresso = "3.2.0"
27-
28-
29-
//support
30-
def support = [:]
31-
support.design = "com.google.android.material:material:$versions.supportLibrary"
32-
support.appcompat = "androidx.appcompat:appcompat:$versions.supportLibrary"
33-
support.constraintlayout = "androidx.constraintlayout:constraintlayout:$versions.constraintLayout"
34-
deps.support = support
35-
36-
//test
37-
def test = [:]
38-
test.junit = "junit:junit:$versions.junit"
39-
test.runner = "androidx.test:runner:$versions.runner"
40-
test.espresso = "androidx.test.espresso:espresso-core:$versions.espresso"
41-
deps.test = test
26+
versions.junit = "1.1.1"
27+
versions.runner = "1.2.0"
28+
versions.espressoCore = "3.2.0"
29+
ext.versions = versions
30+
31+
def deps = [:]
32+
deps.junit = "androidx.test.ext:junit:$versions.junit"
33+
deps.runner = "androidx.test:runner:$versions.runner"
34+
deps.espresso = "androidx.test.espresso:espresso-core:$versions.espressoCore"
35+
deps.appcompat = "androidx.appcompat:appcompat:$versions.appcompat"
36+
deps.constraintlayout = "androidx.constraintlayout:constraintlayout:$versions.constraintlayout"
4237

4338
ext.deps = deps

0 commit comments

Comments
 (0)
Please sign in to comment.