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 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/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java b/decoviewlib/src/main/java/com/hookedonplay/decoviewlib/DecoView.java index 31a4a15..3024859 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, 100f); } } } @@ -391,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())) * ((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/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. */ 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); 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') }