Skip to content

Commit c4cf6b2

Browse files
pekingmeleticiarossi
authored andcommitted
[ProgressIndicator] Added demos for wave effects with new indeterminate motion.
PiperOrigin-RevId: 629767094
1 parent 5b6cf55 commit c4cf6b2

File tree

3 files changed

+67
-10
lines changed

3 files changed

+67
-10
lines changed

catalog/java/io/material/catalog/progressindicator/ProgressIndicatorWaveDemoFragment.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@
1717

1818
import io.material.catalog.R;
1919

20+
import static com.google.android.material.progressindicator.CircularProgressIndicator.INDETERMINATE_ANIMATION_TYPE_ADVANCE;
21+
import static com.google.android.material.progressindicator.CircularProgressIndicator.INDETERMINATE_ANIMATION_TYPE_RETREAT;
22+
2023
import android.view.View;
2124
import androidx.annotation.LayoutRes;
2225
import androidx.annotation.NonNull;
26+
import com.google.android.material.button.MaterialButtonToggleGroup;
2327
import com.google.android.material.materialswitch.MaterialSwitch;
2428
import com.google.android.material.progressindicator.CircularProgressIndicator;
2529
import com.google.android.material.progressindicator.LinearProgressIndicator;
@@ -44,6 +48,8 @@ public void initDemoContents(@NonNull View view) {
4448
public void initDemoControls(@NonNull View view) {
4549
Slider progressSlider = view.findViewById(R.id.progress_slider);
4650
MaterialSwitch determinateSwitch = view.findViewById(R.id.determinate_mode_switch);
51+
MaterialButtonToggleGroup circularAnimationMode =
52+
view.findViewById(R.id.circular_animation_mode);
4753

4854
progressSlider.addOnChangeListener(
4955
(slider, value, fromUser) -> {
@@ -66,6 +72,7 @@ public void initDemoControls(@NonNull View view) {
6672
linearIndicator.setIndeterminate(true);
6773
circularIndicator.setIndeterminate(true);
6874
}
75+
circularAnimationMode.setEnabled(isChecked);
6976
});
7077

7178
float pixelsInDp = view.getResources().getDisplayMetrics().density;
@@ -104,14 +111,26 @@ public void initDemoControls(@NonNull View view) {
104111
}
105112
});
106113

107-
Slider circularSizeSlider = view.findViewById(R.id.circularSizeSlider);
114+
Slider circularSizeSlider = view.findViewById(R.id.circular_size_slider);
108115
circularSizeSlider.addOnChangeListener(
109116
(slider, value, fromUser) -> {
110117
int newCornerRadius = (int) (value * pixelsInDp);
111118
if (circularIndicator.getIndicatorSize() != newCornerRadius) {
112119
circularIndicator.setIndicatorSize(newCornerRadius);
113120
}
114121
});
122+
123+
circularAnimationMode.addOnButtonCheckedListener(
124+
(group, checkedId, isChecked) -> {
125+
if (!isChecked) {
126+
return;
127+
}
128+
if (checkedId == R.id.circular_advance_animation) {
129+
circularIndicator.setIndeterminateAnimationType(INDETERMINATE_ANIMATION_TYPE_ADVANCE);
130+
} else {
131+
circularIndicator.setIndeterminateAnimationType(INDETERMINATE_ANIMATION_TYPE_RETREAT);
132+
}
133+
});
115134
}
116135

117136
@Override

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

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
~ limitations under the License.
1616
-->
1717
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
18-
android:layout_width="match_parent"
19-
android:layout_height="wrap_content"
20-
android:clipChildren="false"
21-
android:clipToPadding="false"
22-
android:orientation="vertical"
23-
android:padding="16dp"
24-
android:showDividers="middle"
25-
android:divider="@drawable/layout_divider">
18+
xmlns:app="http://schemas.android.com/apk/res-auto"
19+
android:layout_width="match_parent"
20+
android:layout_height="wrap_content"
21+
android:clipChildren="false"
22+
android:clipToPadding="false"
23+
android:orientation="vertical"
24+
android:padding="16dp"
25+
android:showDividers="middle"
26+
android:divider="@drawable/layout_divider">
2627

2728
<com.google.android.material.materialswitch.MaterialSwitch
2829
android:id="@+id/determinate_mode_switch"
@@ -85,11 +86,36 @@
8586
android:layout_height="wrap_content"
8687
android:text="@string/cat_progress_indicator_circular_indicator_size"/>
8788
<com.google.android.material.slider.Slider
88-
android:id="@+id/circularSizeSlider"
89+
android:id="@+id/circular_size_slider"
8990
android:layout_width="match_parent"
9091
android:layout_height="wrap_content"
9192
android:value="40"
9293
android:valueFrom="20"
9394
android:valueTo="200"
9495
android:stepSize="5"/>
96+
97+
<TextView
98+
android:layout_width="wrap_content"
99+
android:layout_height="wrap_content"
100+
android:text="@string/cat_progress_indicator_circular_animation_mode"/>
101+
<com.google.android.material.button.MaterialButtonToggleGroup
102+
android:id="@+id/circular_animation_mode"
103+
android:layout_width="wrap_content"
104+
android:layout_height="wrap_content"
105+
app:singleSelection="true"
106+
app:selectionRequired="true"
107+
app:checkedButton="@id/circular_advance_animation">
108+
<Button
109+
android:id="@+id/circular_advance_animation"
110+
style="?attr/materialButtonOutlinedStyle"
111+
android:layout_width="wrap_content"
112+
android:layout_height="wrap_content"
113+
android:text="@string/cat_progress_indicator_circular_advance_animation_label"/>
114+
<Button
115+
android:id="@+id/circular_retreat_animation"
116+
style="?attr/materialButtonOutlinedStyle"
117+
android:layout_width="wrap_content"
118+
android:layout_height="wrap_content"
119+
android:text="@string/cat_progress_indicator_circular_retreat_animation_label"/>
120+
</com.google.android.material.button.MaterialButtonToggleGroup>
95121
</LinearLayout>

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,18 @@
107107
description="Text label above a slider for changing indicators' speed [CHAR LIMIT=NONE]">
108108
Wave speed (-50 - 50) dp/s
109109
</string>
110+
<string name="cat_progress_indicator_circular_animation_mode"
111+
description="The label to the button group on right for selecting circular indeterminate animation mode [CHAR LIMIT=NONE]">
112+
Circular Indeterminate Animation
113+
</string>
114+
<string name="cat_progress_indicator_circular_advance_animation_label"
115+
description="Select the Advance indeterminate motion for circular progress indicator [CHAR LIMIT=NONE]">
116+
Advance
117+
</string>
118+
<string name="cat_progress_indicator_circular_retreat_animation_label"
119+
description="Select the Retreat indeterminate motion for circular progress indicator [CHAR LIMIT=NONE]">
120+
Retreat
121+
</string>
110122

111123
<!-- Descriptions of various examples of progress indicators -->
112124

0 commit comments

Comments
 (0)