Skip to content

Commit b84e654

Browse files
paulfthomaspekingme
authored andcommitted
[NTC][ProgressIndicator] Internal changes
PiperOrigin-RevId: 595708057
1 parent 52b4845 commit b84e654

File tree

7 files changed

+166
-67
lines changed

7 files changed

+166
-67
lines changed

catalog/java/io/material/catalog/progressindicator/ProgressIndicatorMainDemoFragment.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public void initialize(@NonNull View view) {
6161
CircularProgressIndicator circularIndicator = view.findViewById(R.id.circular_indicator);
6262
Slider progressSlider = view.findViewById(R.id.progress_slider);
6363
MaterialSwitch determinateSwitch = view.findViewById(R.id.determinate_mode_switch);
64+
Slider gapSlider = view.findViewById(R.id.gapSlider);
65+
Slider stopSlider = view.findViewById(R.id.stopSlider);
6466

6567
progressSlider.addOnChangeListener(
6668
(slider, value, fromUser) -> {
@@ -111,6 +113,25 @@ public void initialize(@NonNull View view) {
111113
}
112114
});
113115

116+
gapSlider.addOnChangeListener(
117+
(slider, value, fromUser) -> {
118+
int newGapSize = (int) (value * pixelsInDp);
119+
if (linearIndicator.getIndicatorTrackGapSize() != newGapSize) {
120+
linearIndicator.setIndicatorTrackGapSize(newGapSize);
121+
}
122+
if (circularIndicator.getIndicatorTrackGapSize() != newGapSize) {
123+
circularIndicator.setIndicatorTrackGapSize(newGapSize);
124+
}
125+
});
126+
127+
stopSlider.addOnChangeListener(
128+
(slider, value, fromUser) -> {
129+
int newStopSize = (int) (value * pixelsInDp);
130+
if (linearIndicator.getTrackStopIndicatorSize() != newStopSize) {
131+
linearIndicator.setTrackStopIndicatorSize(newStopSize);
132+
}
133+
});
134+
114135
MaterialSwitch reverseSwitch = view.findViewById(R.id.reverseSwitch);
115136
reverseSwitch.setOnCheckedChangeListener(
116137
(buttonView, isChecked) -> {

catalog/java/io/material/catalog/progressindicator/res/layout/cat_progress_indicator_main_fragment.xml

Lines changed: 100 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -14,91 +14,125 @@
1414
~ See the License for the specific language governing permissions and
1515
~ limitations under the License.
1616
-->
17-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
17+
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
1818
android:layout_width="match_parent"
19-
android:layout_height="match_parent"
19+
android:layout_height="match_parent">
20+
21+
<LinearLayout
22+
android:layout_width="match_parent"
23+
android:layout_height="wrap_content"
2024
android:clipChildren="false"
2125
android:clipToPadding="false"
2226
android:orientation="vertical"
2327
android:padding="16dp"
2428
android:showDividers="middle"
2529
android:divider="@drawable/layout_divider">
26-
<TextView
27-
android:layout_width="wrap_content"
28-
android:layout_height="wrap_content"
29-
android:text="@string/cat_progress_indicator_linear" />
30-
<com.google.android.material.progressindicator.LinearProgressIndicator
31-
android:id="@+id/linear_indicator"
32-
android:layout_width="match_parent"
33-
android:layout_height="wrap_content"
34-
android:indeterminate="true"/>
3530

36-
<TextView
37-
android:layout_width="wrap_content"
38-
android:layout_height="wrap_content"
39-
android:text="@string/cat_progress_indicator_circular" />
40-
<com.google.android.material.progressindicator.CircularProgressIndicator
41-
android:id="@+id/circular_indicator"
42-
android:layout_width="wrap_content"
43-
android:layout_height="wrap_content"
44-
android:layout_gravity="center"
45-
android:indeterminate="true"/>
31+
<TextView
32+
android:layout_width="wrap_content"
33+
android:layout_height="wrap_content"
34+
android:text="@string/cat_progress_indicator_linear" />
35+
<com.google.android.material.progressindicator.LinearProgressIndicator
36+
android:id="@+id/linear_indicator"
37+
android:layout_width="match_parent"
38+
android:layout_height="wrap_content"
39+
android:progress="50"/>
4640

47-
<com.google.android.material.materialswitch.MaterialSwitch
48-
android:id="@+id/determinate_mode_switch"
49-
android:layout_width="match_parent"
50-
android:layout_height="wrap_content"
51-
android:text="@string/cat_progress_indicator_set_to_determinate_mode"/>
52-
<TextView
53-
android:layout_width="wrap_content"
54-
android:layout_height="wrap_content"
55-
android:text="@string/cat_progress_indicator_determinate_progress"/>
56-
<com.google.android.material.slider.Slider
57-
android:id="@+id/progress_slider"
58-
android:layout_width="match_parent"
59-
android:layout_height="wrap_content"
60-
android:valueFrom="0"
61-
android:valueTo="100"
62-
android:stepSize="1"/>
41+
<TextView
42+
android:layout_width="wrap_content"
43+
android:layout_height="wrap_content"
44+
android:text="@string/cat_progress_indicator_circular" />
45+
<com.google.android.material.progressindicator.CircularProgressIndicator
46+
android:id="@+id/circular_indicator"
47+
android:layout_width="wrap_content"
48+
android:layout_height="wrap_content"
49+
android:layout_gravity="center"
50+
android:progress="50"/>
6351

64-
<TextView
52+
<com.google.android.material.materialswitch.MaterialSwitch
53+
android:id="@+id/determinate_mode_switch"
54+
android:layout_width="match_parent"
55+
android:layout_height="wrap_content"
56+
android:checked="true"
57+
android:text="@string/cat_progress_indicator_set_to_determinate_mode"/>
58+
<TextView
59+
android:layout_width="wrap_content"
60+
android:layout_height="wrap_content"
61+
android:text="@string/cat_progress_indicator_determinate_progress"/>
62+
<com.google.android.material.slider.Slider
63+
android:id="@+id/progress_slider"
64+
android:layout_width="match_parent"
65+
android:layout_height="wrap_content"
66+
android:value="50"
67+
android:valueFrom="0"
68+
android:valueTo="100"
69+
android:stepSize="1"/>
70+
71+
<TextView
72+
android:layout_width="wrap_content"
73+
android:layout_height="wrap_content"
74+
android:text="@string/cat_progress_indicator_track_thickness"/>
75+
<com.google.android.material.slider.Slider
76+
android:id="@+id/thicknessSlider"
77+
android:layout_width="match_parent"
78+
android:layout_height="wrap_content"
79+
android:value="4"
80+
android:valueFrom="1"
81+
android:valueTo="15"
82+
android:stepSize="1"/>
83+
<TextView
84+
android:layout_width="wrap_content"
85+
android:layout_height="wrap_content"
86+
android:text="@string/cat_progress_indicator_corner_size"/>
87+
<com.google.android.material.slider.Slider
88+
android:id="@+id/cornerSlider"
89+
android:layout_width="match_parent"
90+
android:layout_height="wrap_content"
91+
android:value="2"
92+
android:valueFrom="0"
93+
android:valueTo="5"
94+
android:stepSize="1"/>
95+
<TextView
6596
android:layout_width="wrap_content"
6697
android:layout_height="wrap_content"
67-
android:text="@string/cat_progress_indicator_track_thickness"/>
68-
<com.google.android.material.slider.Slider
69-
android:id="@+id/thicknessSlider"
98+
android:text="@string/cat_progress_indicator_gap_size"/>
99+
<com.google.android.material.slider.Slider
100+
android:id="@+id/gapSlider"
70101
android:layout_width="match_parent"
71102
android:layout_height="wrap_content"
72-
android:valueFrom="1"
73-
android:valueTo="15"
103+
android:value="4"
104+
android:valueFrom="0"
105+
android:valueTo="10"
74106
android:stepSize="1"/>
75-
<TextView
107+
<TextView
76108
android:layout_width="wrap_content"
77109
android:layout_height="wrap_content"
78-
android:text="@string/cat_progress_indicator_corner_size"/>
79-
<com.google.android.material.slider.Slider
80-
android:id="@+id/cornerSlider"
110+
android:text="@string/cat_progress_indicator_stop_size"/>
111+
<com.google.android.material.slider.Slider
112+
android:id="@+id/stopSlider"
81113
android:layout_width="match_parent"
82114
android:layout_height="wrap_content"
115+
android:value="4"
83116
android:valueFrom="0"
84-
android:valueTo="5"
117+
android:valueTo="10"
85118
android:stepSize="1"/>
86-
<com.google.android.material.materialswitch.MaterialSwitch
87-
android:id="@+id/reverseSwitch"
88-
android:layout_width="match_parent"
89-
android:layout_height="wrap_content"
90-
android:text="@string/cat_progress_indicator_reverse_direction"/>
91-
92-
<TextView
93-
android:layout_width="wrap_content"
94-
android:layout_height="wrap_content"
95-
android:text="@string/cat_progress_indicator_circular_indicator_size"/>
96-
<com.google.android.material.slider.Slider
97-
android:id="@+id/circularSizeSlider"
98-
android:layout_width="match_parent"
99-
android:layout_height="wrap_content"
100-
android:valueFrom="20"
101-
android:valueTo="200"
102-
android:stepSize="5"/>
103-
</LinearLayout>
119+
<com.google.android.material.materialswitch.MaterialSwitch
120+
android:id="@+id/reverseSwitch"
121+
android:layout_width="match_parent"
122+
android:layout_height="wrap_content"
123+
android:text="@string/cat_progress_indicator_reverse_direction"/>
104124

125+
<TextView
126+
android:layout_width="wrap_content"
127+
android:layout_height="wrap_content"
128+
android:text="@string/cat_progress_indicator_circular_indicator_size"/>
129+
<com.google.android.material.slider.Slider
130+
android:id="@+id/circularSizeSlider"
131+
android:layout_width="match_parent"
132+
android:layout_height="wrap_content"
133+
android:value="40"
134+
android:valueFrom="20"
135+
android:valueTo="200"
136+
android:stepSize="5"/>
137+
</LinearLayout>
138+
</ScrollView>

catalog/java/io/material/catalog/progressindicator/res/values/strings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@
4747
description="Text label above a slider for adjusting indicators' corner size [CHAR LIMIT=NONE]">
4848
Corner Size (0-5) dp
4949
</string>
50+
<string name="cat_progress_indicator_gap_size" translatable="false"
51+
description="Text label above a slider for adjusting indicators' gap size [CHAR LIMIT=NONE]">
52+
Gap Size (0-10) dp
53+
</string>
54+
<string name="cat_progress_indicator_stop_size" translatable="false"
55+
description="Text label above a slider for adjusting indicators' stop size [CHAR LIMIT=NONE]">
56+
Stop Size (0-10) dp
57+
</string>
5058
<string name="cat_progress_indicator_reverse_direction" translatable="false"
5159
description="Switch label for reversing indicators' direction [CHAR LIMIT=NONE]">
5260
Inverse Direction

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,15 @@ public void setIndicatorDirection(@IndicatorDirection int indicatorDirection) {
196196
invalidate();
197197
}
198198

199+
@Override
200+
public synchronized void setIndeterminate(boolean indeterminate) {
201+
super.setIndeterminate(indeterminate);
202+
203+
if (!indeterminate && getIndeterminateDrawable() != null) {
204+
setIndicatorTrackGapSize(getIndeterminateDrawable().initialIndicatorTrackGapSize);
205+
}
206+
}
207+
199208
// **************** Interface ****************
200209

201210
/** @hide */

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ public final class IndeterminateDrawable<S extends BaseProgressIndicatorSpec>
4747
private IndeterminateAnimatorDelegate<ObjectAnimator> animatorDelegate;
4848

4949
private Drawable staticDummyDrawable;
50-
@Px private int initialIndicatorTrackGapSize;
50+
@Px int initialIndicatorTrackGapSize;
51+
@Px int initialTrackStopIndicatorSize;
5152

5253
IndeterminateDrawable(
5354
@NonNull Context context,
@@ -57,6 +58,10 @@ public final class IndeterminateDrawable<S extends BaseProgressIndicatorSpec>
5758
super(context, baseSpec);
5859

5960
initialIndicatorTrackGapSize = baseSpec.indicatorTrackGapSize;
61+
if (baseSpec instanceof LinearProgressIndicatorSpec) {
62+
initialTrackStopIndicatorSize =
63+
((LinearProgressIndicatorSpec) baseSpec).trackStopIndicatorSize;
64+
}
6065
setDrawingDelegate(drawingDelegate);
6166
setAnimatorDelegate(animatorDelegate);
6267
}
@@ -315,4 +320,8 @@ void setDrawingDelegate(@NonNull DrawingDelegate<S> drawingDelegate) {
315320
void setInitialIndicatorTrackGapSize(@Px int initialIndicatorTrackGapSize) {
316321
this.initialIndicatorTrackGapSize = initialIndicatorTrackGapSize;
317322
}
323+
324+
public void setInitialTrackStopIndicatorSize(int initialTrackStopIndicatorSize) {
325+
this.initialTrackStopIndicatorSize = initialTrackStopIndicatorSize;
326+
}
318327
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ public void setTrackStopIndicatorSize(@Px int trackStopIndicatorSize) {
181181
if (spec.trackStopIndicatorSize != trackStopIndicatorSize) {
182182
spec.trackStopIndicatorSize = trackStopIndicatorSize;
183183
spec.validateSpec();
184+
if (getIndeterminateDrawable() != null) {
185+
getIndeterminateDrawable().setInitialTrackStopIndicatorSize(trackStopIndicatorSize);
186+
}
184187
invalidate();
185188
}
186189
}
@@ -278,6 +281,15 @@ && isIndeterminate()) {
278281
super.setProgressCompat(progress, animated);
279282
}
280283

284+
@Override
285+
public synchronized void setIndeterminate(boolean indeterminate) {
286+
super.setIndeterminate(indeterminate);
287+
288+
if (!indeterminate && getIndeterminateDrawable() != null) {
289+
setTrackStopIndicatorSize(getIndeterminateDrawable().initialTrackStopIndicatorSize);
290+
}
291+
}
292+
281293
// **************** Interface ****************
282294

283295
/** @hide */

lib/java/com/google/android/material/progressindicator/res/values/styles.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,18 @@
5252
<item name="trackThickness">@dimen/m3_comp_linear_progress_indicator_active_indicator_height</item>
5353
<item name="trackColor">@macro/m3_comp_linear_progress_indicator_track_color</item>
5454
<item name="indicatorColor">@macro/m3_comp_linear_progress_indicator_active_indicator_color</item>
55+
<item name="trackCornerRadius">0dp</item>
56+
<item name="indicatorTrackGapSize">0dp</item>
57+
<item name="trackStopIndicatorSize">0dp</item>
5558
</style>
5659

5760
<!-- M3 CircularProgressIndicator Legacy styles -->
5861
<style name="Widget.Material3.CircularProgressIndicator.Legacy" parent="Widget.MaterialComponents.CircularProgressIndicator">
5962
<item name="trackThickness">@dimen/m3_comp_circular_progress_indicator_active_indicator_width</item>
6063
<item name="indicatorColor">@macro/m3_comp_circular_progress_indicator_active_indicator_color</item>
64+
<item name="trackColor">@android:color/transparent</item>
65+
<item name="trackCornerRadius">0dp</item>
66+
<item name="indicatorTrackGapSize">0dp</item>
6167
</style>
6268
<style name="Widget.Material3.CircularProgressIndicator.Legacy.Medium" parent="Widget.MaterialComponents.CircularProgressIndicator.Medium"/>
6369
<style name="Widget.Material3.CircularProgressIndicator.Legacy.Small" parent="Widget.MaterialComponents.CircularProgressIndicator.Small"/>

0 commit comments

Comments
 (0)