From b6972e675c3f5270d2ca7b8f97e9d4c933970723 Mon Sep 17 00:00:00 2001 From: Ivan Terekhin Date: Mon, 18 Jun 2018 16:52:42 +0300 Subject: [PATCH 1/5] Gradle updated --- build.gradle | 4 +++- decoviewlib/build.gradle | 14 +++++++------- gradle/wrapper/gradle-wrapper.properties | 2 +- sampleapp/build.gradle | 14 +++++++------- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index e220f0b..8250249 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.2' + classpath 'com.android.tools.build:gradle:3.1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -15,5 +16,6 @@ buildscript { allprojects { repositories { jcenter() + google() } } diff --git a/decoviewlib/build.gradle b/decoviewlib/build.gradle index 1751f8e..0ffc11c 100644 --- a/decoviewlib/build.gradle +++ b/decoviewlib/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 27 + buildToolsVersion "27.0.3" defaultConfig { - minSdkVersion 8 - targetSdkVersion 23 + minSdkVersion 14 + targetSdkVersion 27 versionCode 10 versionName "1.2" } @@ -24,7 +24,7 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.3.0' - compile 'com.nineoldandroids:library:2.4.0' + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'com.nineoldandroids:library:2.4.0' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 22d46c5..fd7a759 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip diff --git a/sampleapp/build.gradle b/sampleapp/build.gradle index aae3ae9..6db208d 100644 --- a/sampleapp/build.gradle +++ b/sampleapp/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 27 + buildToolsVersion "27.0.3" defaultConfig { applicationId 'com.hookedonplay.decoviewsample' - minSdkVersion 8 - targetSdkVersion 23 + minSdkVersion 14 + targetSdkVersion 27 versionCode 10 versionName "1.2" } @@ -25,7 +25,7 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.3.0' - compile project(':decoviewlib') + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation project(':decoviewlib') } From 7ac491d277abfc44e2eb8bf02dd6109044a48443 Mon Sep 17 00:00:00 2001 From: Ivan Terekhin Date: Tue, 19 Jun 2018 15:27:32 +0300 Subject: [PATCH 2/5] Gitignore updated --- .gitignore | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f46cc99 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/tmp +/captures +.externalNativeBuild +app/link +*.log +.idea/codeStyles/Project.xml +.idea/statistic.xml +app/fabric.properties +.idea/caches/build_file_checksums.ser +*.ser From 0246d8b2b4fbfaf8a2579cd8bd38e9c7c1e727fc Mon Sep 17 00:00:00 2001 From: Ivan Terekhin Date: Tue, 19 Jun 2018 15:28:00 +0300 Subject: [PATCH 3/5] Fix the label display for 180 arc's --- .../com/hookedonplay/decoviewlib/DecoView.java | 15 ++++++--------- .../decoviewlib/charts/ChartSeries.java | 4 ++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java index 31a4a15..4c21662 100644 --- a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java +++ b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java @@ -26,6 +26,7 @@ import android.util.AttributeSet; import android.util.Log; import android.view.View; + import com.hookedonplay.decoviewlib.charts.ChartSeries; import com.hookedonplay.decoviewlib.charts.DecoDrawEffect; import com.hookedonplay.decoviewlib.charts.LineArcSeries; @@ -348,24 +349,20 @@ protected void onDraw(Canvas canvas) { if (mChartSeries != null) { boolean labelsSupported = true; + for (int i = 0; i < mChartSeries.size(); i++) { ChartSeries chartSeries = mChartSeries.get(i); chartSeries.draw(canvas, mArcBounds); // labels Unsupported if one or more series run anticlockwise - labelsSupported &= (!chartSeries.isVisible() || chartSeries.getSeriesItem().getSpinClockwise()); + // labelsSupported &= (!chartSeries.isVisible() || chartSeries.getSeriesItem().getSpinClockwise()); mMeasureViewableArea[i] = getLabelPosition(i); } // Draw the labels as a second pass as we want all labels to be on top of all // series data - if (labelsSupported) { - for (int i = 0; i < mMeasureViewableArea.length; i++) { - if (mMeasureViewableArea[i] >= 0f) { - ChartSeries chartSeries = mChartSeries.get(i); - chartSeries.drawLabel(canvas, mArcBounds, mMeasureViewableArea[i]); - //TODO: Keep bounds of all labels and don't allow overlap - } - } + for (int i = 0; i < mChartSeries.size(); i++) { + ChartSeries chartSeries = mChartSeries.get(i); + chartSeries.drawLabel(canvas, chartSeries.mBoundsInset, mMeasureViewableArea[i]); } } } diff --git a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/ChartSeries.java b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/ChartSeries.java index 3cf45a3..b5b6402 100644 --- a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/ChartSeries.java +++ b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/ChartSeries.java @@ -71,11 +71,11 @@ abstract public class ChartSeries { /** * Drawing bounds for arc */ - protected RectF mBounds; + public RectF mBounds; /** * Drawing bounds for arc after inset applied */ - protected RectF mBoundsInset; + public RectF mBoundsInset; /** * Angle of drawing point origin. */ From d64e8e072294e953fca15d59fc1e2ee902779f69 Mon Sep 17 00:00:00 2001 From: Ivan Terekhin Date: Tue, 19 Jun 2018 16:07:28 +0300 Subject: [PATCH 4/5] Always put graphics labels at center --- .../src/main/java/com/hookedonplay/decoviewlib/DecoView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java index 4c21662..fb9d473 100644 --- a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java +++ b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java @@ -388,7 +388,7 @@ private float getLabelPosition(final int index) { if (max < chartSeries.getPositionPercent()) { // Adjust for incomplete circles - float adjusted = ((chartSeries.getPositionPercent() + max) / 2) * ((float) mTotalAngle / 360f); + float adjusted = ((chartSeries.getPositionPercent()) / 2) * ((float) mTotalAngle / 360f); // Adjust for rotation of start point float adjust = adjusted + (((float) mRotateAngle + 90f) / 360f); From 0f29d2e164413bde5f0af150449d65ba6b6e45b6 Mon Sep 17 00:00:00 2001 From: Ivan Terekhin Date: Wed, 13 Mar 2019 19:10:46 +0300 Subject: [PATCH 5/5] Hack for positioning of labels --- .../main/java/com/hookedonplay/decoviewlib/DecoView.java | 4 ++-- .../com/hookedonplay/decoviewlib/charts/SeriesLabel.java | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java index fb9d473..3024859 100644 --- a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java +++ b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java @@ -362,7 +362,7 @@ protected void onDraw(Canvas canvas) { // series data for (int i = 0; i < mChartSeries.size(); i++) { ChartSeries chartSeries = mChartSeries.get(i); - chartSeries.drawLabel(canvas, chartSeries.mBoundsInset, mMeasureViewableArea[i]); + chartSeries.drawLabel(canvas, chartSeries.mBoundsInset, 100f); } } } @@ -388,7 +388,7 @@ private float getLabelPosition(final int index) { if (max < chartSeries.getPositionPercent()) { // Adjust for incomplete circles - float adjusted = ((chartSeries.getPositionPercent()) / 2) * ((float) mTotalAngle / 360f); + float adjusted = ((chartSeries.getPositionPercent())) * ((float) mTotalAngle / 360f); // Adjust for rotation of start point float adjust = adjusted + (((float) mRotateAngle + 90f) / 360f); diff --git a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/SeriesLabel.java b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/SeriesLabel.java index 163a7b6..17d0c54 100644 --- a/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/SeriesLabel.java +++ b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/charts/SeriesLabel.java @@ -130,8 +130,8 @@ public RectF draw(@NonNull Canvas canvas, @NonNull RectF rect, float radius = rect.width() / 2; float radians = ((360f * percentAngle) - 90) * (float) (Math.PI / 180f); - float xVal = (float) Math.cos(radians) * radius + rect.centerX(); - float yVal = (float) Math.sin(radians) * radius + rect.centerY(); + float xVal = (float) Math.cos(radians) * radius + rect.left; + float yVal = (float) Math.sin(radians) * radius + rect.bottom; final float halfWidth = (mTextBounds.width() / 2) + mBufferX; final float halfHeight = (mTextBounds.height() / 2) + mBufferY; @@ -153,11 +153,6 @@ public RectF draw(@NonNull Canvas canvas, @NonNull RectF rect, xVal + halfWidth, yVal + halfHeight); - - canvas.drawRoundRect( - mTextDraw, - 10f, 10f, mPaintBack); - yVal -= mTextCenter; canvas.drawText(getDisplayString(percentComplete, positionValue), xVal, yVal, mPaintText);