Skip to content

Commit

Permalink
[ProgressIndicator] Refactored the catalogs for more demos in future.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 620287681
  • Loading branch information
pekingme authored and paulfthomas committed Apr 2, 2024
1 parent 4f21b95 commit b61ab85
Show file tree
Hide file tree
Showing 12 changed files with 345 additions and 250 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.material.catalog.progressindicator;

import io.material.catalog.R;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.material.catalog.feature.DemoFragment;

/**
* Base class that provides a structure for Progress Indicator demos with optional controls for the
* Catalog app.
*/
public abstract class ProgressIndicatorDemoFragment extends DemoFragment {

@Override
@NonNull
public View onCreateDemoView(
@NonNull LayoutInflater layoutInflater,
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {
View view =
layoutInflater.inflate(
R.layout.cat_progress_indicator_fragment, viewGroup, false /* attachToRoot */);

// Inflate the demo content layout.
ViewGroup content = view.findViewById(R.id.content);
content.addView(
layoutInflater.inflate(
getProgressIndicatorContentLayout(), content, /* attachToRoot= */ false));

initDemoContents(view);

// Inflate the demo controls layout.
@LayoutRes int demoControls = getProgressIndicatorDemoControlLayout();
if (demoControls != 0) {
ViewGroup control = view.findViewById(R.id.control);
control.addView(
layoutInflater.inflate(
getProgressIndicatorDemoControlLayout(), control, /* attachToRoot= */ false));
}

initDemoControls(view);

return view;
}

public void initDemoContents(@NonNull View view) {}

public void initDemoControls(@NonNull View view) {}

@LayoutRes
public abstract int getProgressIndicatorContentLayout();

@LayoutRes
public int getProgressIndicatorDemoControlLayout() {
return 0;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,43 +22,31 @@
import static com.google.android.material.progressindicator.LinearProgressIndicator.INDICATOR_DIRECTION_LEFT_TO_RIGHT;
import static com.google.android.material.progressindicator.LinearProgressIndicator.INDICATOR_DIRECTION_RIGHT_TO_LEFT;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.materialswitch.MaterialSwitch;
import com.google.android.material.progressindicator.CircularProgressIndicator;
import com.google.android.material.progressindicator.LinearProgressIndicator;
import com.google.android.material.slider.Slider;
import io.material.catalog.feature.DemoFragment;

/**
* This is the fragment to demo simple use cases of {@link LinearProgressIndicator} and {@link
* CircularProgressIndicator}.
*/
public class ProgressIndicatorMainDemoFragment extends DemoFragment {
public class ProgressIndicatorMainDemoFragment extends ProgressIndicatorDemoFragment {

@Override
@NonNull
public View onCreateDemoView(
@NonNull LayoutInflater layoutInflater,
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {

View view =
layoutInflater.inflate(
R.layout.cat_progress_indicator_main_fragment, viewGroup, false /* attachToRoot */);

initialize(view);
@NonNull private LinearProgressIndicator linearIndicator;
@NonNull private CircularProgressIndicator circularIndicator;

return view;
@Override
public void initDemoContents(@NonNull View view) {
linearIndicator = view.findViewById(R.id.linear_indicator);
circularIndicator = view.findViewById(R.id.circular_indicator);
}

public void initialize(@NonNull View view) {
LinearProgressIndicator linearIndicator = view.findViewById(R.id.linear_indicator);
CircularProgressIndicator circularIndicator = view.findViewById(R.id.circular_indicator);
@Override
public void initDemoControls(@NonNull View view) {
Slider progressSlider = view.findViewById(R.id.progress_slider);
MaterialSwitch determinateSwitch = view.findViewById(R.id.determinate_mode_switch);

Expand Down Expand Up @@ -150,4 +138,16 @@ public void initialize(@NonNull View view) {
}
});
}

@Override
@LayoutRes
public int getProgressIndicatorContentLayout() {
return R.layout.cat_progress_indicator_main_content;
}

@Override
@LayoutRes
public int getProgressIndicatorDemoControlLayout() {
return R.layout.cat_progress_indicator_basic_controls;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,17 @@

import io.material.catalog.R;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.progressindicator.CircularProgressIndicator;
import com.google.android.material.progressindicator.LinearProgressIndicator;
import io.material.catalog.feature.DemoFragment;
import androidx.annotation.LayoutRes;

/**
* This is the fragment to demo using multiple indicator colors in {@link LinearProgressIndicator}
* and {@link CircularProgressIndicator}.
*/
public class ProgressIndicatorMultiColorDemoFragment extends DemoFragment {
public class ProgressIndicatorMultiColorDemoFragment extends ProgressIndicatorDemoFragment {

@Override
@NonNull
public View onCreateDemoView(
@NonNull LayoutInflater layoutInflater,
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {

return layoutInflater.inflate(
R.layout.cat_progress_indicator_multi_color_fragment, viewGroup, false /* attachToRoot */);
@LayoutRes
public int getProgressIndicatorContentLayout() {
return R.layout.cat_progress_indicator_multi_color_content;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,40 +17,25 @@

import io.material.catalog.R;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StyleRes;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.chip.Chip;
import com.google.android.material.materialswitch.MaterialSwitch;
import com.google.android.material.progressindicator.CircularProgressIndicatorSpec;
import com.google.android.material.progressindicator.IndeterminateDrawable;
import io.material.catalog.feature.DemoFragment;

/**
* The fragment demos progress indicator drawables used as standalone drawables in other components.
*/
public class ProgressIndicatorStandaloneDemoFragment extends DemoFragment {
public class ProgressIndicatorStandaloneDemoFragment extends ProgressIndicatorDemoFragment {

@SuppressWarnings("RestrictTo")
@Override
@NonNull
public View onCreateDemoView(
@NonNull LayoutInflater layoutInflater,
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {
View view =
layoutInflater.inflate(
R.layout.cat_progress_indicator_standalone_fragment,
viewGroup,
/*attachToRoot=*/ false);

public void initDemoContents(@NonNull View view) {
CircularProgressIndicatorSpec spec =
new CircularProgressIndicatorSpec(getContext(), /*attrs=*/ null, 0, getSpecStyleResId());
new CircularProgressIndicatorSpec(getContext(), /* attrs= */ null, 0, getSpecStyleResId());
Chip chip = view.findViewById(R.id.cat_progress_indicator_chip);
chip.setChipIcon(IndeterminateDrawable.createCircularDrawable(getContext(), spec));

Expand All @@ -66,7 +51,12 @@ public View onCreateDemoView(
chip.setChipIconVisible(isChecked);
button.setIcon(isChecked ? progressIndicatorDrawable : null);
});
return view;
}

@Override
@LayoutRes
public int getProgressIndicatorContentLayout() {
return R.layout.cat_progress_indicator_standalone_content;
}

@StyleRes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,15 @@

import io.material.catalog.R;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.materialswitch.MaterialSwitch;
import com.google.android.material.progressindicator.CircularProgressIndicator;
import com.google.android.material.progressindicator.LinearProgressIndicator;
import com.google.android.material.slider.Slider;
import io.material.catalog.feature.DemoFragment;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
Expand All @@ -38,7 +34,7 @@
* This is the fragment to demo different visibility change behaviors of {@link
* LinearProgressIndicator} and {@link CircularProgressIndicator}.
*/
public class ProgressIndicatorVisibilityDemoFragment extends DemoFragment {
public class ProgressIndicatorVisibilityDemoFragment extends ProgressIndicatorDemoFragment {

public static final int SHOW_NONE = 0;
public static final int SHOW_OUTWARD = 1;
Expand All @@ -61,27 +57,17 @@ public class ProgressIndicatorVisibilityDemoFragment extends DemoFragment {
hideBehaviorCodes.put("escape", HIDE_ESCAPE);
}

@Override
@NonNull
public View onCreateDemoView(
@NonNull LayoutInflater layoutInflater,
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {

View view =
layoutInflater.inflate(
R.layout.cat_progress_indicator_visibility_fragment,
viewGroup,
false /* attachToRoot */);

initialize(view);
@NonNull private LinearProgressIndicator linearIndicator;
@NonNull private CircularProgressIndicator circularIndicator;

return view;
@Override
public void initDemoContents(@NonNull View view) {
linearIndicator = view.findViewById(R.id.linear_indicator);
circularIndicator = view.findViewById(R.id.circular_indicator);
}

public void initialize(@NonNull View view) {
LinearProgressIndicator linearIndicator = view.findViewById(R.id.linear_indicator);
CircularProgressIndicator circularIndicator = view.findViewById(R.id.circular_indicator);
@Override
public void initDemoControls(@NonNull View view) {
Slider progressSlider = view.findViewById(R.id.progress_slider);
MaterialSwitch determinateSwitch = view.findViewById(R.id.determinate_mode_switch);

Expand Down Expand Up @@ -146,4 +132,16 @@ public void initialize(@NonNull View view) {
}
});
}

@Override
@LayoutRes
public int getProgressIndicatorContentLayout() {
return R.layout.cat_progress_indicator_main_content;
}

@Override
@LayoutRes
public int getProgressIndicatorDemoControlLayout() {
return R.layout.cat_progress_indicator_visibility_controls;
}
}
Loading

0 comments on commit b61ab85

Please sign in to comment.