@@ -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