Skip to content

Commit f9f57d7

Browse files
pekingmedsn5ft
authored andcommitted
[CircularProgressIndicator] Fixed the transparent strip drawn at the ends of the indicator.
Resolves partially #1947 PiperOrigin-RevId: 388953254
1 parent e2c911b commit f9f57d7

File tree

1 file changed

+11
-41
lines changed

1 file changed

+11
-41
lines changed

lib/java/com/google/android/material/progressindicator/CircularDrawingDelegate.java

Lines changed: 11 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -142,28 +142,9 @@ void fillIndicator(
142142
// Draws rounded corners if needed.
143143
if (displayedCornerRadius > 0 && Math.abs(arcDegree) < 360) {
144144
paint.setStyle(Style.FILL);
145-
RectF cornerPatternRectBound =
146-
new RectF(
147-
-displayedCornerRadius,
148-
-displayedCornerRadius,
149-
displayedCornerRadius,
150-
displayedCornerRadius);
145+
drawRoundedEnd(canvas, paint, displayedTrackThickness, displayedCornerRadius, startDegree);
151146
drawRoundedEnd(
152-
canvas,
153-
paint,
154-
displayedTrackThickness,
155-
displayedCornerRadius,
156-
startDegree,
157-
true,
158-
cornerPatternRectBound);
159-
drawRoundedEnd(
160-
canvas,
161-
paint,
162-
displayedTrackThickness,
163-
displayedCornerRadius,
164-
startDegree + arcDegree,
165-
false,
166-
cornerPatternRectBound);
147+
canvas, paint, displayedTrackThickness, displayedCornerRadius, startDegree + arcDegree);
167148
}
168149
}
169150

@@ -193,28 +174,17 @@ private int getSize() {
193174
}
194175

195176
private void drawRoundedEnd(
196-
Canvas canvas,
197-
Paint paint,
198-
float trackSize,
199-
float cornerRadius,
200-
float positionInDeg,
201-
boolean isStartPosition,
202-
RectF cornerPatternRectBound) {
203-
float startOrEndFactor = isStartPosition ? -1 : 1;
177+
Canvas canvas, Paint paint, float trackSize, float cornerRadius, float positionInDeg) {
204178
canvas.save();
205179
canvas.rotate(positionInDeg);
206-
canvas.drawRect(
207-
adjustedRadius - trackSize / 2 + cornerRadius,
208-
Math.min(0, startOrEndFactor * cornerRadius * arcDirectionFactor),
209-
adjustedRadius + trackSize / 2 - cornerRadius,
210-
Math.max(0, startOrEndFactor * cornerRadius * arcDirectionFactor),
211-
paint);
212-
canvas.translate(adjustedRadius - trackSize / 2 + cornerRadius, 0);
213-
canvas.drawArc(
214-
cornerPatternRectBound, 180, -startOrEndFactor * 90 * arcDirectionFactor, true, paint);
215-
canvas.translate(trackSize - 2 * cornerRadius, 0);
216-
canvas.drawArc(
217-
cornerPatternRectBound, 0, startOrEndFactor * 90 * arcDirectionFactor, true, paint);
180+
181+
RectF cornersBound =
182+
new RectF(
183+
adjustedRadius - trackSize / 2,
184+
cornerRadius,
185+
adjustedRadius + trackSize / 2,
186+
-cornerRadius);
187+
canvas.drawRoundRect(cornersBound, cornerRadius, cornerRadius, paint);
218188
canvas.restore();
219189
}
220190
}

0 commit comments

Comments
 (0)