diff --git a/app/src/main/java/params/com/statusView/StatusView.kt b/app/src/main/java/params/com/statusView/StatusView.kt index e16e9d4..07eebdb 100644 --- a/app/src/main/java/params/com/statusView/StatusView.kt +++ b/app/src/main/java/params/com/statusView/StatusView.kt @@ -296,6 +296,14 @@ class StatusView @JvmOverloads constructor( * A boolean which decides if to draw labels or not */ + var drawCount: Boolean by OnValidateProp(false){ + setDrawingDimensions() + } + + /** + * A boolean which decides if labels should be written inside + */ + var drawLabels: Boolean by OnValidateProp(false){ setDrawingDimensions() } @@ -429,6 +437,7 @@ class StatusView @JvmOverloads constructor( incompleteDrawable = a.getDrawable(R.styleable.StatusViewScroller_incompleteDrawable) currentDrawable = a.getDrawable(R.styleable.StatusViewScroller_currentDrawable) 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) @@ -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()) + 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()) + } + drawCount -> { + 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..398f265 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:drawLabels="false" + app:drawCount="true" 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..b99d264 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -34,6 +34,7 @@ + @@ -46,4 +47,4 @@ - \ No newline at end of file +