Skip to content

Commit

Permalink
[ProgressIndicator] Improved cold start performance.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 623243122
  • Loading branch information
pekingme authored and imhappi committed Apr 10, 2024
1 parent b56afa7 commit c153139
Showing 1 changed file with 14 additions and 5 deletions.
Expand Up @@ -68,10 +68,10 @@ public final class DeterminateDrawable<S extends BaseProgressIndicatorSpec>
private boolean skipAnimationOnLevelChange = false;

@NonNull private final ValueAnimator phaseAnimator;
@NonNull private final ValueAnimator amplitudeAnimator;
@NonNull private ValueAnimator amplitudeAnimator;
private TimeInterpolator amplitudeInterpolator;
@NonNull private final TimeInterpolator amplitudeOnInterpolator;
@NonNull private final TimeInterpolator amplitudeOffInterpolator;
@NonNull private TimeInterpolator amplitudeOnInterpolator;
@NonNull private TimeInterpolator amplitudeOffInterpolator;

DeterminateDrawable(
@NonNull Context context,
Expand Down Expand Up @@ -106,6 +106,13 @@ public final class DeterminateDrawable<S extends BaseProgressIndicatorSpec>
phaseAnimator.start();
}

setGrowFraction(1f);
}

private void maybeInitializeAmplitudeAnimator() {
if (amplitudeAnimator != null) {
return;
}
// Initializes a linear animator to turn on/off wave amplitude.
amplitudeOnInterpolator =
MotionUtils.resolveThemeInterpolator(
Expand All @@ -124,8 +131,6 @@ public final class DeterminateDrawable<S extends BaseProgressIndicatorSpec>
activeIndicator.amplitudeFraction =
amplitudeInterpolator.getInterpolation(amplitudeAnimator.getAnimatedFraction());
});

setGrowFraction(1f);
}

/**
Expand Down Expand Up @@ -288,8 +293,12 @@ private float getAmplitudeFractionFromLevel(int level) {
}

private void maybeStartAmplitudeAnimator(int level) {
if (!baseSpec.hasWavyEffect()) {
return;
}
float newAmplitudeFraction = getAmplitudeFractionFromLevel(level);
if (newAmplitudeFraction != targetAmplitudeFraction) {
maybeInitializeAmplitudeAnimator();
if (amplitudeAnimator.isRunning()) {
amplitudeAnimator.cancel();
}
Expand Down

0 comments on commit c153139

Please sign in to comment.