From 39e52c06f432f87ce81ffc981002d221397a58d0 Mon Sep 17 00:00:00 2001 From: jibbo Date: Tue, 12 Nov 2019 11:02:42 +0100 Subject: [PATCH 1/2] made possible to have labels only inside --- .../java/params/com/statusView/StatusView.kt | 53 ++++++++++++------- app/src/main/res/layout/activity_main.xml | 5 +- app/src/main/res/values/attrs.xml | 5 +- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/params/com/statusView/StatusView.kt b/app/src/main/java/params/com/statusView/StatusView.kt index e16e9d4..c2251e7 100644 --- a/app/src/main/java/params/com/statusView/StatusView.kt +++ b/app/src/main/java/params/com/statusView/StatusView.kt @@ -296,7 +296,15 @@ class StatusView @JvmOverloads constructor( * A boolean which decides if to draw labels or not */ - var drawLabels: Boolean by OnValidateProp(false){ + var drawLabelsBelow: Boolean by OnValidateProp(false){ + setDrawingDimensions() + } + + /** + * A boolean which decides if labels should be written inside + */ + + var drawLabelsInside: Boolean by OnValidateProp(false){ setDrawingDimensions() } @@ -428,7 +436,8 @@ class StatusView @JvmOverloads constructor( completeDrawable = a.getDrawable(R.styleable.StatusViewScroller_completeDrawable) incompleteDrawable = a.getDrawable(R.styleable.StatusViewScroller_incompleteDrawable) currentDrawable = a.getDrawable(R.styleable.StatusViewScroller_currentDrawable) - drawLabels = a.getBoolean(R.styleable.StatusViewScroller_drawLabels, drawLabels) + drawLabelsInside = a.getBoolean(R.styleable.StatusViewScroller_drawLabelsInside, drawLabelsInside) + drawLabelsBelow = a.getBoolean(R.styleable.StatusViewScroller_drawLabelsBelow, drawLabelsBelow) strictObeyLineLength = a.getBoolean(R.styleable.StatusViewScroller_strictObeyLineLength, strictObeyLineLength) lineGap = a.getDimension(R.styleable.StatusViewScroller_lineGap, lineGap) minStatusAdjacentMargin = a.getDimension(R.styleable.StatusViewScroller_minStatusAdjacentMargin, minStatusAdjacentMargin) @@ -768,31 +777,39 @@ class StatusView @JvmOverloads constructor( val circleItem = CircleItem(PointF((lastPoint.x + circleRadius), lastPoint.y), circleRadius, circleStrokePaint, circleFillPaint) lastPoint.x += ((circleRadius) * 2.0f) + (circleStrokeWidth / 2) - if(pos { + val width = itemDrawable.intrinsicWidth + val height = itemDrawable.intrinsicHeight + val xPos = circleItem.center.x.toInt() + val yPos = circleItem.center.y.toInt() + val drawableRect = Rect(xPos - width / 2, yPos - height / 2, xPos + width / 2, yPos + height / 2) + statusItemText = LabelItemText(drawableItem = DrawableItem(drawableRect, itemDrawable)) + } - } else if (drawLabels) { - val text: String = (pos + 1).toString() - val measuringRect = Rect() - textPaintLabel.getTextBounds(text, 0, text.length, measuringRect) - statusItemText = LabelItemText(text, textPaintLabel, circleItem.center.x, circleItem.center.y - measuringRect.exactCenterY()) + drawLabelsInside -> { + val text: String = statusData[pos].text + val measuringRect = Rect() + textPaintLabel.getTextBounds(text, 0, text.length, measuringRect) + statusItemText = LabelItemText(text, textPaintLabel, circleItem.center.x, circleItem.center.y - measuringRect.exactCenterY()) + } + drawLabelsBelow -> { + val text: String = (pos + 1).toString() + val measuringRect = Rect() + textPaintLabel.getTextBounds(text, 0, text.length, measuringRect) + statusItemText = LabelItemText(text, textPaintLabel, circleItem.center.x, circleItem.center.y - measuringRect.exactCenterY()) + } } - drawingData.add(Item(statusItemText, circleItem, lineItem,labelItemText)) - + drawingData.add(Item(statusItemText, circleItem, lineItem, labelItemText)) } @@ -1120,4 +1137,4 @@ class StatusView @JvmOverloads constructor( } } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cc33be2..9574399 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -18,7 +18,8 @@ app:layout_constraintEnd_toEndOf="parent" app:stepCount="5" app:currentCount="4" - app:drawLabels="true" + app:drawLabelsInside="true" + app:drawLabelsBelow="false" android:entries="@array/status" app:circleColorType="fillStroke" app:lineGap="5dp" @@ -43,4 +44,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 64efe20..50a09b8 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -33,7 +33,8 @@ - + + @@ -46,4 +47,4 @@ - \ No newline at end of file + From ed3acc88699310f8615ca51757164a7fa962a885 Mon Sep 17 00:00:00 2001 From: jibbo Date: Tue, 12 Nov 2019 11:09:50 +0100 Subject: [PATCH 2/2] clean up --- .../main/java/params/com/statusView/StatusView.kt | 14 +++++++------- app/src/main/res/layout/activity_main.xml | 4 ++-- app/src/main/res/values/attrs.xml | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/params/com/statusView/StatusView.kt b/app/src/main/java/params/com/statusView/StatusView.kt index c2251e7..07eebdb 100644 --- a/app/src/main/java/params/com/statusView/StatusView.kt +++ b/app/src/main/java/params/com/statusView/StatusView.kt @@ -296,7 +296,7 @@ class StatusView @JvmOverloads constructor( * A boolean which decides if to draw labels or not */ - var drawLabelsBelow: Boolean by OnValidateProp(false){ + var drawCount: Boolean by OnValidateProp(false){ setDrawingDimensions() } @@ -304,7 +304,7 @@ class StatusView @JvmOverloads constructor( * A boolean which decides if labels should be written inside */ - var drawLabelsInside: Boolean by OnValidateProp(false){ + var drawLabels: Boolean by OnValidateProp(false){ setDrawingDimensions() } @@ -436,8 +436,8 @@ class StatusView @JvmOverloads constructor( completeDrawable = a.getDrawable(R.styleable.StatusViewScroller_completeDrawable) incompleteDrawable = a.getDrawable(R.styleable.StatusViewScroller_incompleteDrawable) currentDrawable = a.getDrawable(R.styleable.StatusViewScroller_currentDrawable) - drawLabelsInside = a.getBoolean(R.styleable.StatusViewScroller_drawLabelsInside, drawLabelsInside) - drawLabelsBelow = a.getBoolean(R.styleable.StatusViewScroller_drawLabelsBelow, drawLabelsBelow) + drawLabels = a.getBoolean(R.styleable.StatusViewScroller_drawLabels, drawLabels) + drawCount = a.getBoolean(R.styleable.StatusViewScroller_drawCount, drawCount) strictObeyLineLength = a.getBoolean(R.styleable.StatusViewScroller_strictObeyLineLength, strictObeyLineLength) lineGap = a.getDimension(R.styleable.StatusViewScroller_lineGap, lineGap) minStatusAdjacentMargin = a.getDimension(R.styleable.StatusViewScroller_minStatusAdjacentMargin, minStatusAdjacentMargin) @@ -777,7 +777,7 @@ class StatusView @JvmOverloads constructor( val circleItem = CircleItem(PointF((lastPoint.x + circleRadius), lastPoint.y), circleRadius, circleStrokePaint, circleFillPaint) lastPoint.x += ((circleRadius) * 2.0f) + (circleStrokeWidth / 2) - if(!drawLabelsInside && pos { + drawLabels -> { val text: String = statusData[pos].text val measuringRect = Rect() textPaintLabel.getTextBounds(text, 0, text.length, measuringRect) statusItemText = LabelItemText(text, textPaintLabel, circleItem.center.x, circleItem.center.y - measuringRect.exactCenterY()) } - drawLabelsBelow -> { + drawCount -> { val text: String = (pos + 1).toString() val measuringRect = Rect() textPaintLabel.getTextBounds(text, 0, text.length, measuringRect) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9574399..398f265 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -18,8 +18,8 @@ app:layout_constraintEnd_toEndOf="parent" app:stepCount="5" app:currentCount="4" - app:drawLabelsInside="true" - app:drawLabelsBelow="false" + app:drawLabels="false" + app:drawCount="true" android:entries="@array/status" app:circleColorType="fillStroke" app:lineGap="5dp" diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 50a09b8..b99d264 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -33,8 +33,8 @@ - - + +