ADD week 5

This commit is contained in:
2025-03-31 16:33:42 +02:00
parent 86f265f22d
commit bf645048e6
4927 changed files with 544053 additions and 0 deletions

View File

@ -0,0 +1,6 @@
package com.google.android.material.transition;
/* loaded from: classes.dex */
interface FadeModeEvaluator {
FadeModeResult evaluate(float f, float f2, float f3, float f4);
}

View File

@ -0,0 +1,49 @@
package com.google.android.material.transition;
/* loaded from: classes.dex */
class FadeModeEvaluators {
private static final FadeModeEvaluator IN = new FadeModeEvaluator() { // from class: com.google.android.material.transition.FadeModeEvaluators.1
@Override // com.google.android.material.transition.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
return FadeModeResult.endOnTop(255, TransitionUtils.lerp(0, 255, f2, f3, f));
}
};
private static final FadeModeEvaluator OUT = new FadeModeEvaluator() { // from class: com.google.android.material.transition.FadeModeEvaluators.2
@Override // com.google.android.material.transition.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
return FadeModeResult.startOnTop(TransitionUtils.lerp(255, 0, f2, f3, f), 255);
}
};
private static final FadeModeEvaluator CROSS = new FadeModeEvaluator() { // from class: com.google.android.material.transition.FadeModeEvaluators.3
@Override // com.google.android.material.transition.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
return FadeModeResult.startOnTop(TransitionUtils.lerp(255, 0, f2, f3, f), TransitionUtils.lerp(0, 255, f2, f3, f));
}
};
private static final FadeModeEvaluator THROUGH = new FadeModeEvaluator() { // from class: com.google.android.material.transition.FadeModeEvaluators.4
@Override // com.google.android.material.transition.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
float f5 = ((f3 - f2) * f4) + f2;
return FadeModeResult.startOnTop(TransitionUtils.lerp(255, 0, f2, f5, f), TransitionUtils.lerp(0, 255, f5, f3, f));
}
};
static FadeModeEvaluator get(int i, boolean z) {
if (i == 0) {
return z ? IN : OUT;
}
if (i == 1) {
return z ? OUT : IN;
}
if (i == 2) {
return CROSS;
}
if (i == 3) {
return THROUGH;
}
throw new IllegalArgumentException("Invalid fade mode: " + i);
}
private FadeModeEvaluators() {
}
}

View File

@ -0,0 +1,22 @@
package com.google.android.material.transition;
/* loaded from: classes.dex */
class FadeModeResult {
final int endAlpha;
final boolean endOnTop;
final int startAlpha;
static FadeModeResult startOnTop(int i, int i2) {
return new FadeModeResult(i, i2, false);
}
static FadeModeResult endOnTop(int i, int i2) {
return new FadeModeResult(i, i2, true);
}
private FadeModeResult(int i, int i2, boolean z) {
this.startAlpha = i;
this.endAlpha = i2;
this.endOnTop = z;
}
}

View File

@ -0,0 +1,49 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class FadeProvider implements VisibilityAnimatorProvider {
private float incomingEndThreshold = 1.0f;
public float getIncomingEndThreshold() {
return this.incomingEndThreshold;
}
public void setIncomingEndThreshold(float f) {
this.incomingEndThreshold = f;
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeAnimator(view, 0.0f, alpha, 0.0f, this.incomingEndThreshold, alpha);
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeAnimator(view, alpha, 0.0f, 0.0f, 1.0f, alpha);
}
private static Animator createFadeAnimator(final View view, final float f, final float f2, final float f3, final float f4, final float f5) {
ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f);
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.transition.FadeProvider.1
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha(TransitionUtils.lerp(f, f2, f3, f4, ((Float) valueAnimator.getAnimatedValue()).floatValue()));
}
});
ofFloat.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.FadeProvider.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setAlpha(f5);
}
});
return ofFloat;
}
}

View File

@ -0,0 +1,50 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class FadeThroughProvider implements VisibilityAnimatorProvider {
static final float FADE_THROUGH_THRESHOLD = 0.35f;
private float progressThreshold = FADE_THROUGH_THRESHOLD;
public float getProgressThreshold() {
return this.progressThreshold;
}
public void setProgressThreshold(float f) {
this.progressThreshold = f;
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeThroughAnimator(view, 0.0f, alpha, this.progressThreshold, 1.0f, alpha);
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeThroughAnimator(view, alpha, 0.0f, 0.0f, this.progressThreshold, alpha);
}
private static Animator createFadeThroughAnimator(final View view, final float f, final float f2, final float f3, final float f4, final float f5) {
ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f);
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.transition.FadeThroughProvider.1
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha(TransitionUtils.lerp(f, f2, f3, f4, ((Float) valueAnimator.getAnimatedValue()).floatValue()));
}
});
ofFloat.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.FadeThroughProvider.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setAlpha(f5);
}
});
return ofFloat;
}
}

View File

@ -0,0 +1,12 @@
package com.google.android.material.transition;
import android.graphics.RectF;
/* loaded from: classes.dex */
interface FitModeEvaluator {
void applyMask(RectF rectF, float f, FitModeResult fitModeResult);
FitModeResult evaluate(float f, float f2, float f3, float f4, float f5, float f6, float f7);
boolean shouldMaskStartBounds(FitModeResult fitModeResult);
}

View File

@ -0,0 +1,80 @@
package com.google.android.material.transition;
import android.graphics.RectF;
/* loaded from: classes.dex */
class FitModeEvaluators {
private static final FitModeEvaluator WIDTH = new FitModeEvaluator() { // from class: com.google.android.material.transition.FitModeEvaluators.1
@Override // com.google.android.material.transition.FitModeEvaluator
public FitModeResult evaluate(float f, float f2, float f3, float f4, float f5, float f6, float f7) {
float lerp = TransitionUtils.lerp(f4, f6, f2, f3, f, true);
float f8 = lerp / f4;
float f9 = lerp / f6;
return new FitModeResult(f8, f9, lerp, f5 * f8, lerp, f7 * f9);
}
@Override // com.google.android.material.transition.FitModeEvaluator
public boolean shouldMaskStartBounds(FitModeResult fitModeResult) {
return fitModeResult.currentStartHeight > fitModeResult.currentEndHeight;
}
@Override // com.google.android.material.transition.FitModeEvaluator
public void applyMask(RectF rectF, float f, FitModeResult fitModeResult) {
rectF.bottom -= Math.abs(fitModeResult.currentEndHeight - fitModeResult.currentStartHeight) * f;
}
};
private static final FitModeEvaluator HEIGHT = new FitModeEvaluator() { // from class: com.google.android.material.transition.FitModeEvaluators.2
@Override // com.google.android.material.transition.FitModeEvaluator
public FitModeResult evaluate(float f, float f2, float f3, float f4, float f5, float f6, float f7) {
float lerp = TransitionUtils.lerp(f5, f7, f2, f3, f, true);
float f8 = lerp / f5;
float f9 = lerp / f7;
return new FitModeResult(f8, f9, f4 * f8, lerp, f6 * f9, lerp);
}
@Override // com.google.android.material.transition.FitModeEvaluator
public boolean shouldMaskStartBounds(FitModeResult fitModeResult) {
return fitModeResult.currentStartWidth > fitModeResult.currentEndWidth;
}
@Override // com.google.android.material.transition.FitModeEvaluator
public void applyMask(RectF rectF, float f, FitModeResult fitModeResult) {
float abs = (Math.abs(fitModeResult.currentEndWidth - fitModeResult.currentStartWidth) / 2.0f) * f;
rectF.left += abs;
rectF.right -= abs;
}
};
static FitModeEvaluator get(int i, boolean z, RectF rectF, RectF rectF2) {
if (i == 0) {
return shouldAutoFitToWidth(z, rectF, rectF2) ? WIDTH : HEIGHT;
}
if (i == 1) {
return WIDTH;
}
if (i == 2) {
return HEIGHT;
}
throw new IllegalArgumentException("Invalid fit mode: " + i);
}
private static boolean shouldAutoFitToWidth(boolean z, RectF rectF, RectF rectF2) {
float width = rectF.width();
float height = rectF.height();
float width2 = rectF2.width();
float height2 = rectF2.height();
float f = (height2 * width) / width2;
float f2 = (width2 * height) / width;
if (z) {
if (f >= height) {
return true;
}
} else if (f2 >= height2) {
return true;
}
return false;
}
private FitModeEvaluators() {
}
}

View File

@ -0,0 +1,20 @@
package com.google.android.material.transition;
/* loaded from: classes.dex */
class FitModeResult {
final float currentEndHeight;
final float currentEndWidth;
final float currentStartHeight;
final float currentStartWidth;
final float endScale;
final float startScale;
FitModeResult(float f, float f2, float f3, float f4, float f5, float f6) {
this.startScale = f;
this.endScale = f2;
this.currentStartWidth = f3;
this.currentStartHeight = f4;
this.currentEndWidth = f5;
this.currentEndHeight = f6;
}
}

View File

@ -0,0 +1,21 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
import androidx.transition.TransitionValues;
import androidx.transition.Visibility;
/* loaded from: classes.dex */
public final class Hold extends Visibility {
@Override // androidx.transition.Visibility
public Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return ValueAnimator.ofFloat(0.0f);
}
@Override // androidx.transition.Visibility
public Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return ValueAnimator.ofFloat(0.0f);
}
}

View File

@ -0,0 +1,49 @@
package com.google.android.material.transition;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.RectF;
import android.graphics.Region;
import android.os.Build;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.ShapeAppearancePathProvider;
import com.google.android.material.transition.MaterialContainerTransform;
/* loaded from: classes.dex */
class MaskEvaluator {
private ShapeAppearanceModel currentShapeAppearanceModel;
private final Path path = new Path();
private final Path startPath = new Path();
private final Path endPath = new Path();
private final ShapeAppearancePathProvider pathProvider = ShapeAppearancePathProvider.getInstance();
ShapeAppearanceModel getCurrentShapeAppearanceModel() {
return this.currentShapeAppearanceModel;
}
Path getPath() {
return this.path;
}
MaskEvaluator() {
}
void evaluate(float f, ShapeAppearanceModel shapeAppearanceModel, ShapeAppearanceModel shapeAppearanceModel2, RectF rectF, RectF rectF2, RectF rectF3, MaterialContainerTransform.ProgressThresholds progressThresholds) {
ShapeAppearanceModel lerp = TransitionUtils.lerp(shapeAppearanceModel, shapeAppearanceModel2, rectF, rectF3, progressThresholds.getStart(), progressThresholds.getEnd(), f);
this.currentShapeAppearanceModel = lerp;
this.pathProvider.calculatePath(lerp, 1.0f, rectF2, this.startPath);
this.pathProvider.calculatePath(this.currentShapeAppearanceModel, 1.0f, rectF3, this.endPath);
if (Build.VERSION.SDK_INT >= 23) {
this.path.op(this.startPath, this.endPath, Path.Op.UNION);
}
}
void clip(Canvas canvas) {
if (Build.VERSION.SDK_INT >= 23) {
canvas.clipPath(this.path);
} else {
canvas.clipPath(this.startPath);
canvas.clipPath(this.endPath, Region.Op.UNION);
}
}
}

View File

@ -0,0 +1,24 @@
package com.google.android.material.transition;
import android.graphics.Path;
import android.graphics.PointF;
import androidx.transition.PathMotion;
/* loaded from: classes.dex */
public final class MaterialArcMotion extends PathMotion {
@Override // androidx.transition.PathMotion
public Path getPath(float f, float f2, float f3, float f4) {
Path path = new Path();
path.moveTo(f, f2);
PointF controlPoint = getControlPoint(f, f2, f3, f4);
path.quadTo(controlPoint.x, controlPoint.y, f3, f4);
return path;
}
private static PointF getControlPoint(float f, float f2, float f3, float f4) {
if (f2 > f4) {
return new PointF(f3, f2);
}
return new PointF(f, f4);
}
}

View File

@ -0,0 +1,856 @@
package com.google.android.material.transition;
import android.R;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.PointF;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.core.util.Preconditions;
import androidx.core.view.InputDeviceCompat;
import androidx.core.view.ViewCompat;
import androidx.transition.ArcMotion;
import androidx.transition.PathMotion;
import androidx.transition.Transition;
import androidx.transition.TransitionValues;
import com.google.android.material.animation.AnimationUtils;
import com.google.android.material.canvas.CanvasCompat;
import com.google.android.material.internal.ViewUtils;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.Shapeable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public final class MaterialContainerTransform extends Transition {
private static final ProgressThresholdsGroup DEFAULT_RETURN_THRESHOLDS;
private static final ProgressThresholdsGroup DEFAULT_RETURN_THRESHOLDS_ARC;
private static final float ELEVATION_NOT_SET = -1.0f;
public static final int FADE_MODE_CROSS = 2;
public static final int FADE_MODE_IN = 0;
public static final int FADE_MODE_OUT = 1;
public static final int FADE_MODE_THROUGH = 3;
public static final int FIT_MODE_AUTO = 0;
public static final int FIT_MODE_HEIGHT = 2;
public static final int FIT_MODE_WIDTH = 1;
private static final String TAG = "MaterialContainerTransform";
public static final int TRANSITION_DIRECTION_AUTO = 0;
public static final int TRANSITION_DIRECTION_ENTER = 1;
public static final int TRANSITION_DIRECTION_RETURN = 2;
private boolean appliedThemeValues;
private int containerColor;
private boolean drawDebugEnabled;
private int drawingViewId;
private boolean elevationShadowEnabled;
private int endContainerColor;
private float endElevation;
private ShapeAppearanceModel endShapeAppearanceModel;
private View endView;
private int endViewId;
private int fadeMode;
private ProgressThresholds fadeProgressThresholds;
private int fitMode;
private boolean holdAtEndEnabled;
private boolean pathMotionCustom;
private ProgressThresholds scaleMaskProgressThresholds;
private ProgressThresholds scaleProgressThresholds;
private int scrimColor;
private ProgressThresholds shapeMaskProgressThresholds;
private int startContainerColor;
private float startElevation;
private ShapeAppearanceModel startShapeAppearanceModel;
private View startView;
private int startViewId;
private int transitionDirection;
private static final String PROP_BOUNDS = "materialContainerTransition:bounds";
private static final String PROP_SHAPE_APPEARANCE = "materialContainerTransition:shapeAppearance";
private static final String[] TRANSITION_PROPS = {PROP_BOUNDS, PROP_SHAPE_APPEARANCE};
private static final ProgressThresholdsGroup DEFAULT_ENTER_THRESHOLDS = new ProgressThresholdsGroup(new ProgressThresholds(0.0f, 0.25f), new ProgressThresholds(0.0f, 1.0f), new ProgressThresholds(0.0f, 1.0f), new ProgressThresholds(0.0f, 0.75f));
private static final ProgressThresholdsGroup DEFAULT_ENTER_THRESHOLDS_ARC = new ProgressThresholdsGroup(new ProgressThresholds(0.1f, 0.4f), new ProgressThresholds(0.1f, 1.0f), new ProgressThresholds(0.1f, 1.0f), new ProgressThresholds(0.1f, 0.9f));
@Retention(RetentionPolicy.SOURCE)
public @interface FadeMode {
}
@Retention(RetentionPolicy.SOURCE)
public @interface FitMode {
}
@Retention(RetentionPolicy.SOURCE)
public @interface TransitionDirection {
}
public int getContainerColor() {
return this.containerColor;
}
public int getDrawingViewId() {
return this.drawingViewId;
}
public int getEndContainerColor() {
return this.endContainerColor;
}
public float getEndElevation() {
return this.endElevation;
}
public ShapeAppearanceModel getEndShapeAppearanceModel() {
return this.endShapeAppearanceModel;
}
public View getEndView() {
return this.endView;
}
public int getEndViewId() {
return this.endViewId;
}
public int getFadeMode() {
return this.fadeMode;
}
public ProgressThresholds getFadeProgressThresholds() {
return this.fadeProgressThresholds;
}
public int getFitMode() {
return this.fitMode;
}
public ProgressThresholds getScaleMaskProgressThresholds() {
return this.scaleMaskProgressThresholds;
}
public ProgressThresholds getScaleProgressThresholds() {
return this.scaleProgressThresholds;
}
public int getScrimColor() {
return this.scrimColor;
}
public ProgressThresholds getShapeMaskProgressThresholds() {
return this.shapeMaskProgressThresholds;
}
public int getStartContainerColor() {
return this.startContainerColor;
}
public float getStartElevation() {
return this.startElevation;
}
public ShapeAppearanceModel getStartShapeAppearanceModel() {
return this.startShapeAppearanceModel;
}
public View getStartView() {
return this.startView;
}
public int getStartViewId() {
return this.startViewId;
}
public int getTransitionDirection() {
return this.transitionDirection;
}
@Override // androidx.transition.Transition
public String[] getTransitionProperties() {
return TRANSITION_PROPS;
}
public boolean isDrawDebugEnabled() {
return this.drawDebugEnabled;
}
public boolean isElevationShadowEnabled() {
return this.elevationShadowEnabled;
}
public boolean isHoldAtEndEnabled() {
return this.holdAtEndEnabled;
}
public void setAllContainerColors(int i) {
this.containerColor = i;
this.startContainerColor = i;
this.endContainerColor = i;
}
public void setContainerColor(int i) {
this.containerColor = i;
}
public void setDrawDebugEnabled(boolean z) {
this.drawDebugEnabled = z;
}
public void setDrawingViewId(int i) {
this.drawingViewId = i;
}
public void setElevationShadowEnabled(boolean z) {
this.elevationShadowEnabled = z;
}
public void setEndContainerColor(int i) {
this.endContainerColor = i;
}
public void setEndElevation(float f) {
this.endElevation = f;
}
public void setEndShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
this.endShapeAppearanceModel = shapeAppearanceModel;
}
public void setEndView(View view) {
this.endView = view;
}
public void setEndViewId(int i) {
this.endViewId = i;
}
public void setFadeMode(int i) {
this.fadeMode = i;
}
public void setFadeProgressThresholds(ProgressThresholds progressThresholds) {
this.fadeProgressThresholds = progressThresholds;
}
public void setFitMode(int i) {
this.fitMode = i;
}
public void setHoldAtEndEnabled(boolean z) {
this.holdAtEndEnabled = z;
}
public void setScaleMaskProgressThresholds(ProgressThresholds progressThresholds) {
this.scaleMaskProgressThresholds = progressThresholds;
}
public void setScaleProgressThresholds(ProgressThresholds progressThresholds) {
this.scaleProgressThresholds = progressThresholds;
}
public void setScrimColor(int i) {
this.scrimColor = i;
}
public void setShapeMaskProgressThresholds(ProgressThresholds progressThresholds) {
this.shapeMaskProgressThresholds = progressThresholds;
}
public void setStartContainerColor(int i) {
this.startContainerColor = i;
}
public void setStartElevation(float f) {
this.startElevation = f;
}
public void setStartShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
this.startShapeAppearanceModel = shapeAppearanceModel;
}
public void setStartView(View view) {
this.startView = view;
}
public void setStartViewId(int i) {
this.startViewId = i;
}
public void setTransitionDirection(int i) {
this.transitionDirection = i;
}
static {
DEFAULT_RETURN_THRESHOLDS = new ProgressThresholdsGroup(new ProgressThresholds(0.6f, 0.9f), new ProgressThresholds(0.0f, 1.0f), new ProgressThresholds(0.0f, 0.9f), new ProgressThresholds(0.3f, 0.9f));
DEFAULT_RETURN_THRESHOLDS_ARC = new ProgressThresholdsGroup(new ProgressThresholds(0.6f, 0.9f), new ProgressThresholds(0.0f, 0.9f), new ProgressThresholds(0.0f, 0.9f), new ProgressThresholds(0.2f, 0.9f));
}
public MaterialContainerTransform() {
this.drawDebugEnabled = false;
this.holdAtEndEnabled = false;
this.pathMotionCustom = false;
this.appliedThemeValues = false;
this.drawingViewId = R.id.content;
this.startViewId = -1;
this.endViewId = -1;
this.containerColor = 0;
this.startContainerColor = 0;
this.endContainerColor = 0;
this.scrimColor = 1375731712;
this.transitionDirection = 0;
this.fadeMode = 0;
this.fitMode = 0;
this.elevationShadowEnabled = Build.VERSION.SDK_INT >= 28;
this.startElevation = ELEVATION_NOT_SET;
this.endElevation = ELEVATION_NOT_SET;
}
public MaterialContainerTransform(Context context, boolean z) {
this.drawDebugEnabled = false;
this.holdAtEndEnabled = false;
this.pathMotionCustom = false;
this.appliedThemeValues = false;
this.drawingViewId = R.id.content;
this.startViewId = -1;
this.endViewId = -1;
this.containerColor = 0;
this.startContainerColor = 0;
this.endContainerColor = 0;
this.scrimColor = 1375731712;
this.transitionDirection = 0;
this.fadeMode = 0;
this.fitMode = 0;
this.elevationShadowEnabled = Build.VERSION.SDK_INT >= 28;
this.startElevation = ELEVATION_NOT_SET;
this.endElevation = ELEVATION_NOT_SET;
maybeApplyThemeValues(context, z);
this.appliedThemeValues = true;
}
@Override // androidx.transition.Transition
public void setPathMotion(PathMotion pathMotion) {
super.setPathMotion(pathMotion);
this.pathMotionCustom = true;
}
@Override // androidx.transition.Transition
public void captureStartValues(TransitionValues transitionValues) {
captureValues(transitionValues, this.startView, this.startViewId, this.startShapeAppearanceModel);
}
@Override // androidx.transition.Transition
public void captureEndValues(TransitionValues transitionValues) {
captureValues(transitionValues, this.endView, this.endViewId, this.endShapeAppearanceModel);
}
private static void captureValues(TransitionValues transitionValues, View view, int i, ShapeAppearanceModel shapeAppearanceModel) {
if (i != -1) {
transitionValues.view = TransitionUtils.findDescendantOrAncestorById(transitionValues.view, i);
} else if (view != null) {
transitionValues.view = view;
} else if (transitionValues.view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view) instanceof View) {
View view2 = (View) transitionValues.view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view);
transitionValues.view.setTag(com.google.android.material.R.id.mtrl_motion_snapshot_view, null);
transitionValues.view = view2;
}
View view3 = transitionValues.view;
if (!ViewCompat.isLaidOut(view3) && view3.getWidth() == 0 && view3.getHeight() == 0) {
return;
}
RectF relativeBounds = view3.getParent() == null ? TransitionUtils.getRelativeBounds(view3) : TransitionUtils.getLocationOnScreen(view3);
transitionValues.values.put(PROP_BOUNDS, relativeBounds);
transitionValues.values.put(PROP_SHAPE_APPEARANCE, captureShapeAppearance(view3, relativeBounds, shapeAppearanceModel));
}
private static ShapeAppearanceModel captureShapeAppearance(View view, RectF rectF, ShapeAppearanceModel shapeAppearanceModel) {
return TransitionUtils.convertToRelativeCornerSizes(getShapeAppearance(view, shapeAppearanceModel), rectF);
}
/* JADX WARN: Multi-variable type inference failed */
private static ShapeAppearanceModel getShapeAppearance(View view, ShapeAppearanceModel shapeAppearanceModel) {
if (shapeAppearanceModel != null) {
return shapeAppearanceModel;
}
if (view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view) instanceof ShapeAppearanceModel) {
return (ShapeAppearanceModel) view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view);
}
Context context = view.getContext();
int transitionShapeAppearanceResId = getTransitionShapeAppearanceResId(context);
if (transitionShapeAppearanceResId != -1) {
return ShapeAppearanceModel.builder(context, transitionShapeAppearanceResId, 0).build();
}
if (view instanceof Shapeable) {
return ((Shapeable) view).getShapeAppearanceModel();
}
return ShapeAppearanceModel.builder().build();
}
private static int getTransitionShapeAppearanceResId(Context context) {
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(new int[]{com.google.android.material.R.attr.transitionShapeAppearance});
int resourceId = obtainStyledAttributes.getResourceId(0, -1);
obtainStyledAttributes.recycle();
return resourceId;
}
@Override // androidx.transition.Transition
public Animator createAnimator(ViewGroup viewGroup, TransitionValues transitionValues, TransitionValues transitionValues2) {
final View findAncestorById;
View view;
if (transitionValues != null && transitionValues2 != null) {
RectF rectF = (RectF) transitionValues.values.get(PROP_BOUNDS);
ShapeAppearanceModel shapeAppearanceModel = (ShapeAppearanceModel) transitionValues.values.get(PROP_SHAPE_APPEARANCE);
if (rectF == null || shapeAppearanceModel == null) {
Log.w(TAG, "Skipping due to null start bounds. Ensure start view is laid out and measured.");
} else {
RectF rectF2 = (RectF) transitionValues2.values.get(PROP_BOUNDS);
ShapeAppearanceModel shapeAppearanceModel2 = (ShapeAppearanceModel) transitionValues2.values.get(PROP_SHAPE_APPEARANCE);
if (rectF2 == null || shapeAppearanceModel2 == null) {
Log.w(TAG, "Skipping due to null end bounds. Ensure end view is laid out and measured.");
return null;
}
final View view2 = transitionValues.view;
final View view3 = transitionValues2.view;
View view4 = view3.getParent() != null ? view3 : view2;
if (this.drawingViewId == view4.getId()) {
findAncestorById = (View) view4.getParent();
view = view4;
} else {
findAncestorById = TransitionUtils.findAncestorById(view4, this.drawingViewId);
view = null;
}
RectF locationOnScreen = TransitionUtils.getLocationOnScreen(findAncestorById);
float f = -locationOnScreen.left;
float f2 = -locationOnScreen.top;
RectF calculateDrawableBounds = calculateDrawableBounds(findAncestorById, view, f, f2);
rectF.offset(f, f2);
rectF2.offset(f, f2);
boolean isEntering = isEntering(rectF, rectF2);
if (!this.appliedThemeValues) {
maybeApplyThemeValues(view4.getContext(), isEntering);
}
final TransitionDrawable transitionDrawable = new TransitionDrawable(getPathMotion(), view2, rectF, shapeAppearanceModel, getElevationOrDefault(this.startElevation, view2), view3, rectF2, shapeAppearanceModel2, getElevationOrDefault(this.endElevation, view3), this.containerColor, this.startContainerColor, this.endContainerColor, this.scrimColor, isEntering, this.elevationShadowEnabled, FadeModeEvaluators.get(this.fadeMode, isEntering), FitModeEvaluators.get(this.fitMode, isEntering, rectF, rectF2), buildThresholdsGroup(isEntering), this.drawDebugEnabled);
transitionDrawable.setBounds(Math.round(calculateDrawableBounds.left), Math.round(calculateDrawableBounds.top), Math.round(calculateDrawableBounds.right), Math.round(calculateDrawableBounds.bottom));
ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f);
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.transition.MaterialContainerTransform.1
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
public void onAnimationUpdate(ValueAnimator valueAnimator) {
transitionDrawable.setProgress(valueAnimator.getAnimatedFraction());
}
});
addListener(new TransitionListenerAdapter() { // from class: com.google.android.material.transition.MaterialContainerTransform.2
@Override // com.google.android.material.transition.TransitionListenerAdapter, androidx.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
ViewUtils.getOverlay(findAncestorById).add(transitionDrawable);
view2.setAlpha(0.0f);
view3.setAlpha(0.0f);
}
@Override // com.google.android.material.transition.TransitionListenerAdapter, androidx.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
MaterialContainerTransform.this.removeListener(this);
if (MaterialContainerTransform.this.holdAtEndEnabled) {
return;
}
view2.setAlpha(1.0f);
view3.setAlpha(1.0f);
ViewUtils.getOverlay(findAncestorById).remove(transitionDrawable);
}
});
return ofFloat;
}
}
return null;
}
private void maybeApplyThemeValues(Context context, boolean z) {
TransitionUtils.maybeApplyThemeInterpolator(this, context, com.google.android.material.R.attr.motionEasingEmphasizedInterpolator, AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR);
TransitionUtils.maybeApplyThemeDuration(this, context, z ? com.google.android.material.R.attr.motionDurationLong2 : com.google.android.material.R.attr.motionDurationMedium4);
if (this.pathMotionCustom) {
return;
}
TransitionUtils.maybeApplyThemePath(this, context, com.google.android.material.R.attr.motionPath);
}
private static float getElevationOrDefault(float f, View view) {
return f != ELEVATION_NOT_SET ? f : ViewCompat.getElevation(view);
}
private static RectF calculateDrawableBounds(View view, View view2, float f, float f2) {
if (view2 != null) {
RectF locationOnScreen = TransitionUtils.getLocationOnScreen(view2);
locationOnScreen.offset(f, f2);
return locationOnScreen;
}
return new RectF(0.0f, 0.0f, view.getWidth(), view.getHeight());
}
private boolean isEntering(RectF rectF, RectF rectF2) {
int i = this.transitionDirection;
if (i == 0) {
return TransitionUtils.calculateArea(rectF2) > TransitionUtils.calculateArea(rectF);
}
if (i == 1) {
return true;
}
if (i == 2) {
return false;
}
throw new IllegalArgumentException("Invalid transition direction: " + this.transitionDirection);
}
private ProgressThresholdsGroup buildThresholdsGroup(boolean z) {
PathMotion pathMotion = getPathMotion();
if ((pathMotion instanceof ArcMotion) || (pathMotion instanceof MaterialArcMotion)) {
return getThresholdsOrDefault(z, DEFAULT_ENTER_THRESHOLDS_ARC, DEFAULT_RETURN_THRESHOLDS_ARC);
}
return getThresholdsOrDefault(z, DEFAULT_ENTER_THRESHOLDS, DEFAULT_RETURN_THRESHOLDS);
}
private ProgressThresholdsGroup getThresholdsOrDefault(boolean z, ProgressThresholdsGroup progressThresholdsGroup, ProgressThresholdsGroup progressThresholdsGroup2) {
if (!z) {
progressThresholdsGroup = progressThresholdsGroup2;
}
return new ProgressThresholdsGroup((ProgressThresholds) TransitionUtils.defaultIfNull(this.fadeProgressThresholds, progressThresholdsGroup.fade), (ProgressThresholds) TransitionUtils.defaultIfNull(this.scaleProgressThresholds, progressThresholdsGroup.scale), (ProgressThresholds) TransitionUtils.defaultIfNull(this.scaleMaskProgressThresholds, progressThresholdsGroup.scaleMask), (ProgressThresholds) TransitionUtils.defaultIfNull(this.shapeMaskProgressThresholds, progressThresholdsGroup.shapeMask));
}
private static final class TransitionDrawable extends Drawable {
private static final int COMPAT_SHADOW_COLOR = -7829368;
private static final int SHADOW_COLOR = 754974720;
private static final float SHADOW_DX_MULTIPLIER_ADJUSTMENT = 0.3f;
private static final float SHADOW_DY_MULTIPLIER_ADJUSTMENT = 1.5f;
private final MaterialShapeDrawable compatShadowDrawable;
private final Paint containerPaint;
private float currentElevation;
private float currentElevationDy;
private final RectF currentEndBounds;
private final RectF currentEndBoundsMasked;
private RectF currentMaskBounds;
private final RectF currentStartBounds;
private final RectF currentStartBoundsMasked;
private final Paint debugPaint;
private final Path debugPath;
private final float displayHeight;
private final float displayWidth;
private final boolean drawDebugEnabled;
private final boolean elevationShadowEnabled;
private final RectF endBounds;
private final Paint endContainerPaint;
private final float endElevation;
private final ShapeAppearanceModel endShapeAppearanceModel;
private final View endView;
private final boolean entering;
private final FadeModeEvaluator fadeModeEvaluator;
private FadeModeResult fadeModeResult;
private final FitModeEvaluator fitModeEvaluator;
private FitModeResult fitModeResult;
private final MaskEvaluator maskEvaluator;
private final float motionPathLength;
private final PathMeasure motionPathMeasure;
private final float[] motionPathPosition;
private float progress;
private final ProgressThresholdsGroup progressThresholds;
private final Paint scrimPaint;
private final Paint shadowPaint;
private final RectF startBounds;
private final Paint startContainerPaint;
private final float startElevation;
private final ShapeAppearanceModel startShapeAppearanceModel;
private final View startView;
@Override // android.graphics.drawable.Drawable
public int getOpacity() {
return -3;
}
private TransitionDrawable(PathMotion pathMotion, View view, RectF rectF, ShapeAppearanceModel shapeAppearanceModel, float f, View view2, RectF rectF2, ShapeAppearanceModel shapeAppearanceModel2, float f2, int i, int i2, int i3, int i4, boolean z, boolean z2, FadeModeEvaluator fadeModeEvaluator, FitModeEvaluator fitModeEvaluator, ProgressThresholdsGroup progressThresholdsGroup, boolean z3) {
Paint paint = new Paint();
this.containerPaint = paint;
Paint paint2 = new Paint();
this.startContainerPaint = paint2;
Paint paint3 = new Paint();
this.endContainerPaint = paint3;
this.shadowPaint = new Paint();
Paint paint4 = new Paint();
this.scrimPaint = paint4;
this.maskEvaluator = new MaskEvaluator();
this.motionPathPosition = new float[]{rectF.centerX(), rectF.top};
MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable();
this.compatShadowDrawable = materialShapeDrawable;
Paint paint5 = new Paint();
this.debugPaint = paint5;
this.debugPath = new Path();
this.startView = view;
this.startBounds = rectF;
this.startShapeAppearanceModel = shapeAppearanceModel;
this.startElevation = f;
this.endView = view2;
this.endBounds = rectF2;
this.endShapeAppearanceModel = shapeAppearanceModel2;
this.endElevation = f2;
this.entering = z;
this.elevationShadowEnabled = z2;
this.fadeModeEvaluator = fadeModeEvaluator;
this.fitModeEvaluator = fitModeEvaluator;
this.progressThresholds = progressThresholdsGroup;
this.drawDebugEnabled = z3;
WindowManager windowManager = (WindowManager) view.getContext().getSystemService("window");
windowManager.getDefaultDisplay().getMetrics(new DisplayMetrics());
this.displayWidth = r12.widthPixels;
this.displayHeight = r12.heightPixels;
paint.setColor(i);
paint2.setColor(i2);
paint3.setColor(i3);
materialShapeDrawable.setFillColor(ColorStateList.valueOf(0));
materialShapeDrawable.setShadowCompatibilityMode(2);
materialShapeDrawable.setShadowBitmapDrawingEnable(false);
materialShapeDrawable.setShadowColor(COMPAT_SHADOW_COLOR);
RectF rectF3 = new RectF(rectF);
this.currentStartBounds = rectF3;
this.currentStartBoundsMasked = new RectF(rectF3);
RectF rectF4 = new RectF(rectF3);
this.currentEndBounds = rectF4;
this.currentEndBoundsMasked = new RectF(rectF4);
PointF motionPathPoint = getMotionPathPoint(rectF);
PointF motionPathPoint2 = getMotionPathPoint(rectF2);
PathMeasure pathMeasure = new PathMeasure(pathMotion.getPath(motionPathPoint.x, motionPathPoint.y, motionPathPoint2.x, motionPathPoint2.y), false);
this.motionPathMeasure = pathMeasure;
this.motionPathLength = pathMeasure.getLength();
paint4.setStyle(Paint.Style.FILL);
paint4.setShader(TransitionUtils.createColorShader(i4));
paint5.setStyle(Paint.Style.STROKE);
paint5.setStrokeWidth(10.0f);
updateProgress(0.0f);
}
@Override // android.graphics.drawable.Drawable
public void draw(Canvas canvas) {
if (this.scrimPaint.getAlpha() > 0) {
canvas.drawRect(getBounds(), this.scrimPaint);
}
int save = this.drawDebugEnabled ? canvas.save() : -1;
if (this.elevationShadowEnabled && this.currentElevation > 0.0f) {
drawElevationShadow(canvas);
}
this.maskEvaluator.clip(canvas);
maybeDrawContainerColor(canvas, this.containerPaint);
if (this.fadeModeResult.endOnTop) {
drawStartView(canvas);
drawEndView(canvas);
} else {
drawEndView(canvas);
drawStartView(canvas);
}
if (this.drawDebugEnabled) {
canvas.restoreToCount(save);
drawDebugCumulativePath(canvas, this.currentStartBounds, this.debugPath, -65281);
drawDebugRect(canvas, this.currentStartBoundsMasked, InputDeviceCompat.SOURCE_ANY);
drawDebugRect(canvas, this.currentStartBounds, -16711936);
drawDebugRect(canvas, this.currentEndBoundsMasked, -16711681);
drawDebugRect(canvas, this.currentEndBounds, -16776961);
}
}
private void drawElevationShadow(Canvas canvas) {
canvas.save();
canvas.clipPath(this.maskEvaluator.getPath(), Region.Op.DIFFERENCE);
if (Build.VERSION.SDK_INT > 28) {
drawElevationShadowWithPaintShadowLayer(canvas);
} else {
drawElevationShadowWithMaterialShapeDrawable(canvas);
}
canvas.restore();
}
private void drawElevationShadowWithPaintShadowLayer(Canvas canvas) {
ShapeAppearanceModel currentShapeAppearanceModel = this.maskEvaluator.getCurrentShapeAppearanceModel();
if (currentShapeAppearanceModel.isRoundRect(this.currentMaskBounds)) {
float cornerSize = currentShapeAppearanceModel.getTopLeftCornerSize().getCornerSize(this.currentMaskBounds);
canvas.drawRoundRect(this.currentMaskBounds, cornerSize, cornerSize, this.shadowPaint);
} else {
canvas.drawPath(this.maskEvaluator.getPath(), this.shadowPaint);
}
}
private void drawElevationShadowWithMaterialShapeDrawable(Canvas canvas) {
this.compatShadowDrawable.setBounds((int) this.currentMaskBounds.left, (int) this.currentMaskBounds.top, (int) this.currentMaskBounds.right, (int) this.currentMaskBounds.bottom);
this.compatShadowDrawable.setElevation(this.currentElevation);
this.compatShadowDrawable.setShadowVerticalOffset((int) this.currentElevationDy);
this.compatShadowDrawable.setShapeAppearanceModel(this.maskEvaluator.getCurrentShapeAppearanceModel());
this.compatShadowDrawable.draw(canvas);
}
private void drawStartView(Canvas canvas) {
maybeDrawContainerColor(canvas, this.startContainerPaint);
TransitionUtils.transform(canvas, getBounds(), this.currentStartBounds.left, this.currentStartBounds.top, this.fitModeResult.startScale, this.fadeModeResult.startAlpha, new CanvasCompat.CanvasOperation() { // from class: com.google.android.material.transition.MaterialContainerTransform.TransitionDrawable.1
@Override // com.google.android.material.canvas.CanvasCompat.CanvasOperation
public void run(Canvas canvas2) {
TransitionDrawable.this.startView.draw(canvas2);
}
});
}
private void drawEndView(Canvas canvas) {
maybeDrawContainerColor(canvas, this.endContainerPaint);
TransitionUtils.transform(canvas, getBounds(), this.currentEndBounds.left, this.currentEndBounds.top, this.fitModeResult.endScale, this.fadeModeResult.endAlpha, new CanvasCompat.CanvasOperation() { // from class: com.google.android.material.transition.MaterialContainerTransform.TransitionDrawable.2
@Override // com.google.android.material.canvas.CanvasCompat.CanvasOperation
public void run(Canvas canvas2) {
TransitionDrawable.this.endView.draw(canvas2);
}
});
}
private void maybeDrawContainerColor(Canvas canvas, Paint paint) {
if (paint.getColor() == 0 || paint.getAlpha() <= 0) {
return;
}
canvas.drawRect(getBounds(), paint);
}
@Override // android.graphics.drawable.Drawable
public void setAlpha(int i) {
throw new UnsupportedOperationException("Setting alpha on is not supported");
}
@Override // android.graphics.drawable.Drawable
public void setColorFilter(ColorFilter colorFilter) {
throw new UnsupportedOperationException("Setting a color filter is not supported");
}
/* JADX INFO: Access modifiers changed from: private */
public void setProgress(float f) {
if (this.progress != f) {
updateProgress(f);
}
}
private void updateProgress(float f) {
float f2;
float f3;
this.progress = f;
this.scrimPaint.setAlpha((int) (this.entering ? TransitionUtils.lerp(0.0f, 255.0f, f) : TransitionUtils.lerp(255.0f, 0.0f, f)));
this.motionPathMeasure.getPosTan(this.motionPathLength * f, this.motionPathPosition, null);
float[] fArr = this.motionPathPosition;
float f4 = fArr[0];
float f5 = fArr[1];
if (f > 1.0f || f < 0.0f) {
if (f > 1.0f) {
f3 = (f - 1.0f) / 0.00999999f;
f2 = 0.99f;
} else {
f2 = 0.01f;
f3 = (f / 0.01f) * MaterialContainerTransform.ELEVATION_NOT_SET;
}
this.motionPathMeasure.getPosTan(this.motionPathLength * f2, fArr, null);
float[] fArr2 = this.motionPathPosition;
f4 += (f4 - fArr2[0]) * f3;
f5 += (f5 - fArr2[1]) * f3;
}
float f6 = f4;
float f7 = f5;
FitModeResult evaluate = this.fitModeEvaluator.evaluate(f, ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scale.start))).floatValue(), ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scale.end))).floatValue(), this.startBounds.width(), this.startBounds.height(), this.endBounds.width(), this.endBounds.height());
this.fitModeResult = evaluate;
this.currentStartBounds.set(f6 - (evaluate.currentStartWidth / 2.0f), f7, (this.fitModeResult.currentStartWidth / 2.0f) + f6, this.fitModeResult.currentStartHeight + f7);
this.currentEndBounds.set(f6 - (this.fitModeResult.currentEndWidth / 2.0f), f7, f6 + (this.fitModeResult.currentEndWidth / 2.0f), this.fitModeResult.currentEndHeight + f7);
this.currentStartBoundsMasked.set(this.currentStartBounds);
this.currentEndBoundsMasked.set(this.currentEndBounds);
float floatValue = ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scaleMask.start))).floatValue();
float floatValue2 = ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scaleMask.end))).floatValue();
boolean shouldMaskStartBounds = this.fitModeEvaluator.shouldMaskStartBounds(this.fitModeResult);
RectF rectF = shouldMaskStartBounds ? this.currentStartBoundsMasked : this.currentEndBoundsMasked;
float lerp = TransitionUtils.lerp(0.0f, 1.0f, floatValue, floatValue2, f);
if (!shouldMaskStartBounds) {
lerp = 1.0f - lerp;
}
this.fitModeEvaluator.applyMask(rectF, lerp, this.fitModeResult);
this.currentMaskBounds = new RectF(Math.min(this.currentStartBoundsMasked.left, this.currentEndBoundsMasked.left), Math.min(this.currentStartBoundsMasked.top, this.currentEndBoundsMasked.top), Math.max(this.currentStartBoundsMasked.right, this.currentEndBoundsMasked.right), Math.max(this.currentStartBoundsMasked.bottom, this.currentEndBoundsMasked.bottom));
this.maskEvaluator.evaluate(f, this.startShapeAppearanceModel, this.endShapeAppearanceModel, this.currentStartBounds, this.currentStartBoundsMasked, this.currentEndBoundsMasked, this.progressThresholds.shapeMask);
this.currentElevation = TransitionUtils.lerp(this.startElevation, this.endElevation, f);
float calculateElevationDxMultiplier = calculateElevationDxMultiplier(this.currentMaskBounds, this.displayWidth);
float calculateElevationDyMultiplier = calculateElevationDyMultiplier(this.currentMaskBounds, this.displayHeight);
float f8 = this.currentElevation;
float f9 = (int) (calculateElevationDyMultiplier * f8);
this.currentElevationDy = f9;
this.shadowPaint.setShadowLayer(f8, (int) (calculateElevationDxMultiplier * f8), f9, SHADOW_COLOR);
this.fadeModeResult = this.fadeModeEvaluator.evaluate(f, ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.fade.start))).floatValue(), ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.fade.end))).floatValue(), 0.35f);
if (this.startContainerPaint.getColor() != 0) {
this.startContainerPaint.setAlpha(this.fadeModeResult.startAlpha);
}
if (this.endContainerPaint.getColor() != 0) {
this.endContainerPaint.setAlpha(this.fadeModeResult.endAlpha);
}
invalidateSelf();
}
private static PointF getMotionPathPoint(RectF rectF) {
return new PointF(rectF.centerX(), rectF.top);
}
private static float calculateElevationDxMultiplier(RectF rectF, float f) {
return ((rectF.centerX() / (f / 2.0f)) - 1.0f) * SHADOW_DX_MULTIPLIER_ADJUSTMENT;
}
private static float calculateElevationDyMultiplier(RectF rectF, float f) {
return (rectF.centerY() / f) * SHADOW_DY_MULTIPLIER_ADJUSTMENT;
}
private void drawDebugCumulativePath(Canvas canvas, RectF rectF, Path path, int i) {
PointF motionPathPoint = getMotionPathPoint(rectF);
if (this.progress == 0.0f) {
path.reset();
path.moveTo(motionPathPoint.x, motionPathPoint.y);
} else {
path.lineTo(motionPathPoint.x, motionPathPoint.y);
this.debugPaint.setColor(i);
canvas.drawPath(path, this.debugPaint);
}
}
private void drawDebugRect(Canvas canvas, RectF rectF, int i) {
this.debugPaint.setColor(i);
canvas.drawRect(rectF, this.debugPaint);
}
}
public static class ProgressThresholds {
private final float end;
private final float start;
public float getEnd() {
return this.end;
}
public float getStart() {
return this.start;
}
public ProgressThresholds(float f, float f2) {
this.start = f;
this.end = f2;
}
}
private static class ProgressThresholdsGroup {
private final ProgressThresholds fade;
private final ProgressThresholds scale;
private final ProgressThresholds scaleMask;
private final ProgressThresholds shapeMask;
private ProgressThresholdsGroup(ProgressThresholds progressThresholds, ProgressThresholds progressThresholds2, ProgressThresholds progressThresholds3, ProgressThresholds progressThresholds4) {
this.fade = progressThresholds;
this.scale = progressThresholds2;
this.scaleMask = progressThresholds3;
this.shapeMask = progressThresholds4;
}
}
}

View File

@ -0,0 +1,73 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.view.View;
import android.view.ViewGroup;
import androidx.transition.TransitionValues;
/* loaded from: classes.dex */
public final class MaterialElevationScale extends MaterialVisibility<ScaleProvider> {
private static final float DEFAULT_SCALE = 0.85f;
private final boolean growing;
public boolean isGrowing() {
return this.growing;
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.material.transition.ScaleProvider, com.google.android.material.transition.VisibilityAnimatorProvider] */
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ ScaleProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialElevationScale(boolean z) {
super(createPrimaryAnimatorProvider(z), createSecondaryAnimatorProvider());
this.growing = z;
}
private static ScaleProvider createPrimaryAnimatorProvider(boolean z) {
ScaleProvider scaleProvider = new ScaleProvider(z);
scaleProvider.setOutgoingEndScale(DEFAULT_SCALE);
scaleProvider.setIncomingStartScale(DEFAULT_SCALE);
return scaleProvider;
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
return new FadeProvider();
}
}

View File

@ -0,0 +1,92 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.view.View;
import android.view.ViewGroup;
import androidx.transition.TransitionValues;
import com.google.android.material.R;
import com.google.android.material.animation.AnimationUtils;
/* loaded from: classes.dex */
public final class MaterialFade extends MaterialVisibility<FadeProvider> {
private static final float DEFAULT_FADE_END_THRESHOLD_ENTER = 0.3f;
private static final float DEFAULT_START_SCALE = 0.8f;
private static final int DEFAULT_THEMED_INCOMING_DURATION_ATTR = R.attr.motionDurationMedium4;
private static final int DEFAULT_THEMED_OUTGOING_DURATION_ATTR = R.attr.motionDurationShort3;
private static final int DEFAULT_THEMED_INCOMING_EASING_ATTR = R.attr.motionEasingEmphasizedDecelerateInterpolator;
private static final int DEFAULT_THEMED_OUTGOING_EASING_ATTR = R.attr.motionEasingEmphasizedAccelerateInterpolator;
@Override // com.google.android.material.transition.MaterialVisibility
int getDurationThemeAttrResId(boolean z) {
return z ? DEFAULT_THEMED_INCOMING_DURATION_ATTR : DEFAULT_THEMED_OUTGOING_DURATION_ATTR;
}
@Override // com.google.android.material.transition.MaterialVisibility
int getEasingThemeAttrResId(boolean z) {
return z ? DEFAULT_THEMED_INCOMING_EASING_ATTR : DEFAULT_THEMED_OUTGOING_EASING_ATTR;
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.material.transition.FadeProvider, com.google.android.material.transition.VisibilityAnimatorProvider] */
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ FadeProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialFade() {
super(createPrimaryAnimatorProvider(), createSecondaryAnimatorProvider());
}
private static FadeProvider createPrimaryAnimatorProvider() {
FadeProvider fadeProvider = new FadeProvider();
fadeProvider.setIncomingEndThreshold(DEFAULT_FADE_END_THRESHOLD_ENTER);
return fadeProvider;
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
ScaleProvider scaleProvider = new ScaleProvider();
scaleProvider.setScaleOnDisappear(false);
scaleProvider.setIncomingStartScale(DEFAULT_START_SCALE);
return scaleProvider;
}
@Override // com.google.android.material.transition.MaterialVisibility
TimeInterpolator getDefaultEasingInterpolator(boolean z) {
return AnimationUtils.LINEAR_INTERPOLATOR;
}
}

View File

@ -0,0 +1,80 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.view.View;
import android.view.ViewGroup;
import androidx.transition.TransitionValues;
import com.google.android.material.R;
/* loaded from: classes.dex */
public final class MaterialFadeThrough extends MaterialVisibility<FadeThroughProvider> {
private static final float DEFAULT_START_SCALE = 0.92f;
private static final int DEFAULT_THEMED_DURATION_ATTR = R.attr.motionDurationLong1;
private static final int DEFAULT_THEMED_EASING_ATTR = R.attr.motionEasingEmphasizedInterpolator;
@Override // com.google.android.material.transition.MaterialVisibility
int getDurationThemeAttrResId(boolean z) {
return DEFAULT_THEMED_DURATION_ATTR;
}
@Override // com.google.android.material.transition.MaterialVisibility
int getEasingThemeAttrResId(boolean z) {
return DEFAULT_THEMED_EASING_ATTR;
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.material.transition.FadeThroughProvider, com.google.android.material.transition.VisibilityAnimatorProvider] */
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ FadeThroughProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialFadeThrough() {
super(createPrimaryAnimatorProvider(), createSecondaryAnimatorProvider());
}
private static FadeThroughProvider createPrimaryAnimatorProvider() {
return new FadeThroughProvider();
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
ScaleProvider scaleProvider = new ScaleProvider();
scaleProvider.setScaleOnDisappear(false);
scaleProvider.setIncomingStartScale(DEFAULT_START_SCALE);
return scaleProvider;
}
}

View File

@ -0,0 +1,106 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.view.GravityCompat;
import androidx.transition.TransitionValues;
import com.google.android.material.R;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public final class MaterialSharedAxis extends MaterialVisibility<VisibilityAnimatorProvider> {
private static final int DEFAULT_THEMED_DURATION_ATTR = R.attr.motionDurationLong1;
private static final int DEFAULT_THEMED_EASING_ATTR = R.attr.motionEasingEmphasizedInterpolator;
public static final int X = 0;
public static final int Y = 1;
public static final int Z = 2;
private final int axis;
private final boolean forward;
@Retention(RetentionPolicy.SOURCE)
public @interface Axis {
}
public int getAxis() {
return this.axis;
}
@Override // com.google.android.material.transition.MaterialVisibility
int getDurationThemeAttrResId(boolean z) {
return DEFAULT_THEMED_DURATION_ATTR;
}
@Override // com.google.android.material.transition.MaterialVisibility
int getEasingThemeAttrResId(boolean z) {
return DEFAULT_THEMED_EASING_ATTR;
}
public boolean isForward() {
return this.forward;
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility, androidx.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialSharedAxis(int i, boolean z) {
super(createPrimaryAnimatorProvider(i, z), createSecondaryAnimatorProvider());
this.axis = i;
this.forward = z;
}
private static VisibilityAnimatorProvider createPrimaryAnimatorProvider(int i, boolean z) {
if (i == 0) {
return new SlideDistanceProvider(z ? GravityCompat.END : GravityCompat.START);
}
if (i == 1) {
return new SlideDistanceProvider(z ? 80 : 48);
}
if (i == 2) {
return new ScaleProvider(z);
}
throw new IllegalArgumentException("Invalid axis: " + i);
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
return new FadeThroughProvider();
}
}

View File

@ -0,0 +1,108 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.TimeInterpolator;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import androidx.transition.TransitionValues;
import androidx.transition.Visibility;
import com.google.android.material.animation.AnimationUtils;
import com.google.android.material.animation.AnimatorSetCompat;
import com.google.android.material.transition.VisibilityAnimatorProvider;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
abstract class MaterialVisibility<P extends VisibilityAnimatorProvider> extends Visibility {
private final List<VisibilityAnimatorProvider> additionalAnimatorProviders = new ArrayList();
private final P primaryAnimatorProvider;
private VisibilityAnimatorProvider secondaryAnimatorProvider;
int getDurationThemeAttrResId(boolean z) {
return 0;
}
int getEasingThemeAttrResId(boolean z) {
return 0;
}
public P getPrimaryAnimatorProvider() {
return this.primaryAnimatorProvider;
}
public VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return this.secondaryAnimatorProvider;
}
public void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
this.secondaryAnimatorProvider = visibilityAnimatorProvider;
}
protected MaterialVisibility(P p, VisibilityAnimatorProvider visibilityAnimatorProvider) {
this.primaryAnimatorProvider = p;
this.secondaryAnimatorProvider = visibilityAnimatorProvider;
}
public void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
this.additionalAnimatorProviders.add(visibilityAnimatorProvider);
}
public boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return this.additionalAnimatorProviders.remove(visibilityAnimatorProvider);
}
public void clearAdditionalAnimatorProvider() {
this.additionalAnimatorProviders.clear();
}
@Override // androidx.transition.Visibility
public Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return createAnimator(viewGroup, view, true);
}
@Override // androidx.transition.Visibility
public Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return createAnimator(viewGroup, view, false);
}
private Animator createAnimator(ViewGroup viewGroup, View view, boolean z) {
AnimatorSet animatorSet = new AnimatorSet();
ArrayList arrayList = new ArrayList();
addAnimatorIfNeeded(arrayList, this.primaryAnimatorProvider, viewGroup, view, z);
addAnimatorIfNeeded(arrayList, this.secondaryAnimatorProvider, viewGroup, view, z);
Iterator<VisibilityAnimatorProvider> it = this.additionalAnimatorProviders.iterator();
while (it.hasNext()) {
addAnimatorIfNeeded(arrayList, it.next(), viewGroup, view, z);
}
maybeApplyThemeValues(viewGroup.getContext(), z);
AnimatorSetCompat.playTogether(animatorSet, arrayList);
return animatorSet;
}
private static void addAnimatorIfNeeded(List<Animator> list, VisibilityAnimatorProvider visibilityAnimatorProvider, ViewGroup viewGroup, View view, boolean z) {
Animator createDisappear;
if (visibilityAnimatorProvider == null) {
return;
}
if (z) {
createDisappear = visibilityAnimatorProvider.createAppear(viewGroup, view);
} else {
createDisappear = visibilityAnimatorProvider.createDisappear(viewGroup, view);
}
if (createDisappear != null) {
list.add(createDisappear);
}
}
private void maybeApplyThemeValues(Context context, boolean z) {
TransitionUtils.maybeApplyThemeDuration(this, context, getDurationThemeAttrResId(z));
TransitionUtils.maybeApplyThemeInterpolator(this, context, getEasingThemeAttrResId(z), getDefaultEasingInterpolator(z));
}
TimeInterpolator getDefaultEasingInterpolator(boolean z) {
return AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR;
}
}

View File

@ -0,0 +1,113 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class ScaleProvider implements VisibilityAnimatorProvider {
private boolean growing;
private float incomingEndScale;
private float incomingStartScale;
private float outgoingEndScale;
private float outgoingStartScale;
private boolean scaleOnDisappear;
public float getIncomingEndScale() {
return this.incomingEndScale;
}
public float getIncomingStartScale() {
return this.incomingStartScale;
}
public float getOutgoingEndScale() {
return this.outgoingEndScale;
}
public float getOutgoingStartScale() {
return this.outgoingStartScale;
}
public boolean isGrowing() {
return this.growing;
}
public boolean isScaleOnDisappear() {
return this.scaleOnDisappear;
}
public void setGrowing(boolean z) {
this.growing = z;
}
public void setIncomingEndScale(float f) {
this.incomingEndScale = f;
}
public void setIncomingStartScale(float f) {
this.incomingStartScale = f;
}
public void setOutgoingEndScale(float f) {
this.outgoingEndScale = f;
}
public void setOutgoingStartScale(float f) {
this.outgoingStartScale = f;
}
public void setScaleOnDisappear(boolean z) {
this.scaleOnDisappear = z;
}
public ScaleProvider() {
this(true);
}
public ScaleProvider(boolean z) {
this.outgoingStartScale = 1.0f;
this.outgoingEndScale = 1.1f;
this.incomingStartScale = 0.8f;
this.incomingEndScale = 1.0f;
this.scaleOnDisappear = true;
this.growing = z;
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
if (this.growing) {
return createScaleAnimator(view, this.incomingStartScale, this.incomingEndScale);
}
return createScaleAnimator(view, this.outgoingEndScale, this.outgoingStartScale);
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
if (!this.scaleOnDisappear) {
return null;
}
if (this.growing) {
return createScaleAnimator(view, this.outgoingStartScale, this.outgoingEndScale);
}
return createScaleAnimator(view, this.incomingEndScale, this.incomingStartScale);
}
private static Animator createScaleAnimator(final View view, float f, float f2) {
final float scaleX = view.getScaleX();
final float scaleY = view.getScaleY();
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.SCALE_X, scaleX * f, scaleX * f2), PropertyValuesHolder.ofFloat((Property<?, Float>) View.SCALE_Y, f * scaleY, f2 * scaleY));
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.ScaleProvider.1
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setScaleX(scaleX);
view.setScaleY(scaleY);
}
});
return ofPropertyValuesHolder;
}
}

View File

@ -0,0 +1,137 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.content.Context;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.view.ViewCompat;
import com.google.android.material.R;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public final class SlideDistanceProvider implements VisibilityAnimatorProvider {
private static final int DEFAULT_DISTANCE = -1;
private int slideDistance = -1;
private int slideEdge;
@Retention(RetentionPolicy.SOURCE)
public @interface GravityFlag {
}
public int getSlideDistance() {
return this.slideDistance;
}
public int getSlideEdge() {
return this.slideEdge;
}
public void setSlideEdge(int i) {
this.slideEdge = i;
}
public SlideDistanceProvider(int i) {
this.slideEdge = i;
}
public void setSlideDistance(int i) {
if (i < 0) {
throw new IllegalArgumentException("Slide distance must be positive. If attempting to reverse the direction of the slide, use setSlideEdge(int) instead.");
}
this.slideDistance = i;
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
return createTranslationAppearAnimator(viewGroup, view, this.slideEdge, getSlideDistanceOrDefault(view.getContext()));
}
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
return createTranslationDisappearAnimator(viewGroup, view, this.slideEdge, getSlideDistanceOrDefault(view.getContext()));
}
private int getSlideDistanceOrDefault(Context context) {
int i = this.slideDistance;
return i != -1 ? i : context.getResources().getDimensionPixelSize(R.dimen.mtrl_transition_shared_axis_slide_distance);
}
private static Animator createTranslationAppearAnimator(View view, View view2, int i, int i2) {
float translationX = view2.getTranslationX();
float translationY = view2.getTranslationY();
if (i == 3) {
return createTranslationXAnimator(view2, i2 + translationX, translationX, translationX);
}
if (i == 5) {
return createTranslationXAnimator(view2, translationX - i2, translationX, translationX);
}
if (i == 48) {
return createTranslationYAnimator(view2, translationY - i2, translationY, translationY);
}
if (i == 80) {
return createTranslationYAnimator(view2, i2 + translationY, translationY, translationY);
}
if (i == 8388611) {
return createTranslationXAnimator(view2, isRtl(view) ? i2 + translationX : translationX - i2, translationX, translationX);
}
if (i == 8388613) {
return createTranslationXAnimator(view2, isRtl(view) ? translationX - i2 : i2 + translationX, translationX, translationX);
}
throw new IllegalArgumentException("Invalid slide direction: " + i);
}
private static Animator createTranslationDisappearAnimator(View view, View view2, int i, int i2) {
float translationX = view2.getTranslationX();
float translationY = view2.getTranslationY();
if (i == 3) {
return createTranslationXAnimator(view2, translationX, translationX - i2, translationX);
}
if (i == 5) {
return createTranslationXAnimator(view2, translationX, i2 + translationX, translationX);
}
if (i == 48) {
return createTranslationYAnimator(view2, translationY, i2 + translationY, translationY);
}
if (i == 80) {
return createTranslationYAnimator(view2, translationY, translationY - i2, translationY);
}
if (i == 8388611) {
return createTranslationXAnimator(view2, translationX, isRtl(view) ? translationX - i2 : i2 + translationX, translationX);
}
if (i == 8388613) {
return createTranslationXAnimator(view2, translationX, isRtl(view) ? i2 + translationX : translationX - i2, translationX);
}
throw new IllegalArgumentException("Invalid slide direction: " + i);
}
private static Animator createTranslationXAnimator(final View view, float f, float f2, final float f3) {
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_X, f, f2));
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.SlideDistanceProvider.1
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setTranslationX(f3);
}
});
return ofPropertyValuesHolder;
}
private static Animator createTranslationYAnimator(final View view, float f, float f2, final float f3) {
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_Y, f, f2));
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.SlideDistanceProvider.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setTranslationY(f3);
}
});
return ofPropertyValuesHolder;
}
private static boolean isRtl(View view) {
return ViewCompat.getLayoutDirection(view) == 1;
}
}

View File

@ -0,0 +1,29 @@
package com.google.android.material.transition;
import androidx.transition.Transition;
/* loaded from: classes.dex */
abstract class TransitionListenerAdapter implements Transition.TransitionListener {
@Override // androidx.transition.Transition.TransitionListener
public void onTransitionCancel(Transition transition) {
}
@Override // androidx.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
}
@Override // androidx.transition.Transition.TransitionListener
public void onTransitionPause(Transition transition) {
}
@Override // androidx.transition.Transition.TransitionListener
public void onTransitionResume(Transition transition) {
}
@Override // androidx.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
}
TransitionListenerAdapter() {
}
}

View File

@ -0,0 +1,211 @@
package com.google.android.material.transition;
import android.animation.TimeInterpolator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.util.TypedValue;
import android.view.View;
import androidx.core.graphics.PathParser;
import androidx.transition.PathMotion;
import androidx.transition.PatternPathMotion;
import androidx.transition.Transition;
import androidx.transition.TransitionSet;
import com.google.android.material.canvas.CanvasCompat;
import com.google.android.material.motion.MotionUtils;
import com.google.android.material.shape.AbsoluteCornerSize;
import com.google.android.material.shape.CornerSize;
import com.google.android.material.shape.RelativeCornerSize;
import com.google.android.material.shape.ShapeAppearanceModel;
/* loaded from: classes.dex */
class TransitionUtils {
static final int NO_ATTR_RES_ID = 0;
static final int NO_DURATION = -1;
private static final int PATH_TYPE_ARC = 1;
private static final int PATH_TYPE_LINEAR = 0;
private static final RectF transformAlphaRectF = new RectF();
interface CornerSizeBinaryOperator {
CornerSize apply(CornerSize cornerSize, CornerSize cornerSize2);
}
static <T> T defaultIfNull(T t, T t2) {
return t != null ? t : t2;
}
static float lerp(float f, float f2, float f3) {
return f + (f3 * (f2 - f));
}
private TransitionUtils() {
}
static boolean maybeApplyThemeInterpolator(Transition transition, Context context, int i, TimeInterpolator timeInterpolator) {
if (i == 0 || transition.getInterpolator() != null) {
return false;
}
transition.setInterpolator(MotionUtils.resolveThemeInterpolator(context, i, timeInterpolator));
return true;
}
static boolean maybeApplyThemeDuration(Transition transition, Context context, int i) {
int resolveThemeDuration;
if (i == 0 || transition.getDuration() != -1 || (resolveThemeDuration = MotionUtils.resolveThemeDuration(context, i, -1)) == -1) {
return false;
}
transition.setDuration(resolveThemeDuration);
return true;
}
static boolean maybeApplyThemePath(Transition transition, Context context, int i) {
PathMotion resolveThemePath;
if (i == 0 || (resolveThemePath = resolveThemePath(context, i)) == null) {
return false;
}
transition.setPathMotion(resolveThemePath);
return true;
}
static PathMotion resolveThemePath(Context context, int i) {
TypedValue typedValue = new TypedValue();
if (!context.getTheme().resolveAttribute(i, typedValue, true)) {
return null;
}
if (typedValue.type == 16) {
int i2 = typedValue.data;
if (i2 == 0) {
return null;
}
if (i2 == 1) {
return new MaterialArcMotion();
}
throw new IllegalArgumentException("Invalid motion path type: " + i2);
}
if (typedValue.type == 3) {
return new PatternPathMotion(PathParser.createPathFromPathData(String.valueOf(typedValue.string)));
}
throw new IllegalArgumentException("Motion path theme attribute must either be an enum value or path data string");
}
static ShapeAppearanceModel convertToRelativeCornerSizes(ShapeAppearanceModel shapeAppearanceModel, final RectF rectF) {
return shapeAppearanceModel.withTransformedCornerSizes(new ShapeAppearanceModel.CornerSizeUnaryOperator() { // from class: com.google.android.material.transition.TransitionUtils$$ExternalSyntheticLambda0
@Override // com.google.android.material.shape.ShapeAppearanceModel.CornerSizeUnaryOperator
public final CornerSize apply(CornerSize cornerSize) {
CornerSize createFromCornerSize;
createFromCornerSize = RelativeCornerSize.createFromCornerSize(rectF, cornerSize);
return createFromCornerSize;
}
});
}
static ShapeAppearanceModel transformCornerSizes(ShapeAppearanceModel shapeAppearanceModel, ShapeAppearanceModel shapeAppearanceModel2, RectF rectF, CornerSizeBinaryOperator cornerSizeBinaryOperator) {
return (isShapeAppearanceSignificant(shapeAppearanceModel, rectF) ? shapeAppearanceModel : shapeAppearanceModel2).toBuilder().setTopLeftCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getTopLeftCornerSize(), shapeAppearanceModel2.getTopLeftCornerSize())).setTopRightCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getTopRightCornerSize(), shapeAppearanceModel2.getTopRightCornerSize())).setBottomLeftCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getBottomLeftCornerSize(), shapeAppearanceModel2.getBottomLeftCornerSize())).setBottomRightCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getBottomRightCornerSize(), shapeAppearanceModel2.getBottomRightCornerSize())).build();
}
private static boolean isShapeAppearanceSignificant(ShapeAppearanceModel shapeAppearanceModel, RectF rectF) {
return (shapeAppearanceModel.getTopLeftCornerSize().getCornerSize(rectF) == 0.0f && shapeAppearanceModel.getTopRightCornerSize().getCornerSize(rectF) == 0.0f && shapeAppearanceModel.getBottomRightCornerSize().getCornerSize(rectF) == 0.0f && shapeAppearanceModel.getBottomLeftCornerSize().getCornerSize(rectF) == 0.0f) ? false : true;
}
static float lerp(float f, float f2, float f3, float f4, float f5) {
return lerp(f, f2, f3, f4, f5, false);
}
static float lerp(float f, float f2, float f3, float f4, float f5, boolean z) {
if (!z || (f5 >= 0.0f && f5 <= 1.0f)) {
return f5 < f3 ? f : f5 > f4 ? f2 : lerp(f, f2, (f5 - f3) / (f4 - f3));
}
return lerp(f, f2, f5);
}
static int lerp(int i, int i2, float f, float f2, float f3) {
return f3 < f ? i : f3 > f2 ? i2 : (int) lerp(i, i2, (f3 - f) / (f2 - f));
}
static ShapeAppearanceModel lerp(ShapeAppearanceModel shapeAppearanceModel, ShapeAppearanceModel shapeAppearanceModel2, final RectF rectF, final RectF rectF2, final float f, final float f2, final float f3) {
return f3 < f ? shapeAppearanceModel : f3 > f2 ? shapeAppearanceModel2 : transformCornerSizes(shapeAppearanceModel, shapeAppearanceModel2, rectF, new CornerSizeBinaryOperator() { // from class: com.google.android.material.transition.TransitionUtils.1
@Override // com.google.android.material.transition.TransitionUtils.CornerSizeBinaryOperator
public CornerSize apply(CornerSize cornerSize, CornerSize cornerSize2) {
return new AbsoluteCornerSize(TransitionUtils.lerp(cornerSize.getCornerSize(rectF), cornerSize2.getCornerSize(rectF2), f, f2, f3));
}
});
}
static Shader createColorShader(int i) {
return new LinearGradient(0.0f, 0.0f, 0.0f, 0.0f, i, i, Shader.TileMode.CLAMP);
}
static View findDescendantOrAncestorById(View view, int i) {
View findViewById = view.findViewById(i);
return findViewById != null ? findViewById : findAncestorById(view, i);
}
static View findAncestorById(View view, int i) {
String resourceName = view.getResources().getResourceName(i);
while (view != null) {
if (view.getId() != i) {
Object parent = view.getParent();
if (!(parent instanceof View)) {
break;
}
view = (View) parent;
} else {
return view;
}
}
throw new IllegalArgumentException(resourceName + " is not a valid ancestor");
}
static RectF getRelativeBounds(View view) {
return new RectF(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
static Rect getRelativeBoundsRect(View view) {
return new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
static RectF getLocationOnScreen(View view) {
int[] iArr = new int[2];
view.getLocationOnScreen(iArr);
return new RectF(iArr[0], iArr[1], view.getWidth() + r1, view.getHeight() + r0);
}
static float calculateArea(RectF rectF) {
return rectF.width() * rectF.height();
}
private static int saveLayerAlphaCompat(Canvas canvas, Rect rect, int i) {
RectF rectF = transformAlphaRectF;
rectF.set(rect);
return canvas.saveLayerAlpha(rectF, i);
}
static void transform(Canvas canvas, Rect rect, float f, float f2, float f3, int i, CanvasCompat.CanvasOperation canvasOperation) {
if (i <= 0) {
return;
}
int save = canvas.save();
canvas.translate(f, f2);
canvas.scale(f3, f3);
if (i < 255) {
saveLayerAlphaCompat(canvas, rect, i);
}
canvasOperation.run(canvas);
canvas.restoreToCount(save);
}
static void maybeAddTransition(TransitionSet transitionSet, Transition transition) {
if (transition != null) {
transitionSet.addTransition(transition);
}
}
static void maybeRemoveTransition(TransitionSet transitionSet, Transition transition) {
if (transition != null) {
transitionSet.removeTransition(transition);
}
}
}

View File

@ -0,0 +1,12 @@
package com.google.android.material.transition;
import android.animation.Animator;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public interface VisibilityAnimatorProvider {
Animator createAppear(ViewGroup viewGroup, View view);
Animator createDisappear(ViewGroup viewGroup, View view);
}

View File

@ -0,0 +1,6 @@
package com.google.android.material.transition.platform;
/* loaded from: classes.dex */
interface FadeModeEvaluator {
FadeModeResult evaluate(float f, float f2, float f3, float f4);
}

View File

@ -0,0 +1,49 @@
package com.google.android.material.transition.platform;
/* loaded from: classes.dex */
class FadeModeEvaluators {
private static final FadeModeEvaluator IN = new FadeModeEvaluator() { // from class: com.google.android.material.transition.platform.FadeModeEvaluators.1
@Override // com.google.android.material.transition.platform.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
return FadeModeResult.endOnTop(255, TransitionUtils.lerp(0, 255, f2, f3, f));
}
};
private static final FadeModeEvaluator OUT = new FadeModeEvaluator() { // from class: com.google.android.material.transition.platform.FadeModeEvaluators.2
@Override // com.google.android.material.transition.platform.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
return FadeModeResult.startOnTop(TransitionUtils.lerp(255, 0, f2, f3, f), 255);
}
};
private static final FadeModeEvaluator CROSS = new FadeModeEvaluator() { // from class: com.google.android.material.transition.platform.FadeModeEvaluators.3
@Override // com.google.android.material.transition.platform.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
return FadeModeResult.startOnTop(TransitionUtils.lerp(255, 0, f2, f3, f), TransitionUtils.lerp(0, 255, f2, f3, f));
}
};
private static final FadeModeEvaluator THROUGH = new FadeModeEvaluator() { // from class: com.google.android.material.transition.platform.FadeModeEvaluators.4
@Override // com.google.android.material.transition.platform.FadeModeEvaluator
public FadeModeResult evaluate(float f, float f2, float f3, float f4) {
float f5 = ((f3 - f2) * f4) + f2;
return FadeModeResult.startOnTop(TransitionUtils.lerp(255, 0, f2, f5, f), TransitionUtils.lerp(0, 255, f5, f3, f));
}
};
static FadeModeEvaluator get(int i, boolean z) {
if (i == 0) {
return z ? IN : OUT;
}
if (i == 1) {
return z ? OUT : IN;
}
if (i == 2) {
return CROSS;
}
if (i == 3) {
return THROUGH;
}
throw new IllegalArgumentException("Invalid fade mode: " + i);
}
private FadeModeEvaluators() {
}
}

View File

@ -0,0 +1,22 @@
package com.google.android.material.transition.platform;
/* loaded from: classes.dex */
class FadeModeResult {
final int endAlpha;
final boolean endOnTop;
final int startAlpha;
static FadeModeResult startOnTop(int i, int i2) {
return new FadeModeResult(i, i2, false);
}
static FadeModeResult endOnTop(int i, int i2) {
return new FadeModeResult(i, i2, true);
}
private FadeModeResult(int i, int i2, boolean z) {
this.startAlpha = i;
this.endAlpha = i2;
this.endOnTop = z;
}
}

View File

@ -0,0 +1,49 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class FadeProvider implements VisibilityAnimatorProvider {
private float incomingEndThreshold = 1.0f;
public float getIncomingEndThreshold() {
return this.incomingEndThreshold;
}
public void setIncomingEndThreshold(float f) {
this.incomingEndThreshold = f;
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeAnimator(view, 0.0f, alpha, 0.0f, this.incomingEndThreshold, alpha);
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeAnimator(view, alpha, 0.0f, 0.0f, 1.0f, alpha);
}
private static Animator createFadeAnimator(final View view, final float f, final float f2, final float f3, final float f4, final float f5) {
ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f);
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.transition.platform.FadeProvider.1
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha(TransitionUtils.lerp(f, f2, f3, f4, ((Float) valueAnimator.getAnimatedValue()).floatValue()));
}
});
ofFloat.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.platform.FadeProvider.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setAlpha(f5);
}
});
return ofFloat;
}
}

View File

@ -0,0 +1,50 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class FadeThroughProvider implements VisibilityAnimatorProvider {
static final float FADE_THROUGH_THRESHOLD = 0.35f;
private float progressThreshold = FADE_THROUGH_THRESHOLD;
public float getProgressThreshold() {
return this.progressThreshold;
}
public void setProgressThreshold(float f) {
this.progressThreshold = f;
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeThroughAnimator(view, 0.0f, alpha, this.progressThreshold, 1.0f, alpha);
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
float alpha = view.getAlpha() == 0.0f ? 1.0f : view.getAlpha();
return createFadeThroughAnimator(view, alpha, 0.0f, 0.0f, this.progressThreshold, alpha);
}
private static Animator createFadeThroughAnimator(final View view, final float f, final float f2, final float f3, final float f4, final float f5) {
ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f);
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.transition.platform.FadeThroughProvider.1
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha(TransitionUtils.lerp(f, f2, f3, f4, ((Float) valueAnimator.getAnimatedValue()).floatValue()));
}
});
ofFloat.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.platform.FadeThroughProvider.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setAlpha(f5);
}
});
return ofFloat;
}
}

View File

@ -0,0 +1,12 @@
package com.google.android.material.transition.platform;
import android.graphics.RectF;
/* loaded from: classes.dex */
interface FitModeEvaluator {
void applyMask(RectF rectF, float f, FitModeResult fitModeResult);
FitModeResult evaluate(float f, float f2, float f3, float f4, float f5, float f6, float f7);
boolean shouldMaskStartBounds(FitModeResult fitModeResult);
}

View File

@ -0,0 +1,80 @@
package com.google.android.material.transition.platform;
import android.graphics.RectF;
/* loaded from: classes.dex */
class FitModeEvaluators {
private static final FitModeEvaluator WIDTH = new FitModeEvaluator() { // from class: com.google.android.material.transition.platform.FitModeEvaluators.1
@Override // com.google.android.material.transition.platform.FitModeEvaluator
public FitModeResult evaluate(float f, float f2, float f3, float f4, float f5, float f6, float f7) {
float lerp = TransitionUtils.lerp(f4, f6, f2, f3, f, true);
float f8 = lerp / f4;
float f9 = lerp / f6;
return new FitModeResult(f8, f9, lerp, f5 * f8, lerp, f7 * f9);
}
@Override // com.google.android.material.transition.platform.FitModeEvaluator
public boolean shouldMaskStartBounds(FitModeResult fitModeResult) {
return fitModeResult.currentStartHeight > fitModeResult.currentEndHeight;
}
@Override // com.google.android.material.transition.platform.FitModeEvaluator
public void applyMask(RectF rectF, float f, FitModeResult fitModeResult) {
rectF.bottom -= Math.abs(fitModeResult.currentEndHeight - fitModeResult.currentStartHeight) * f;
}
};
private static final FitModeEvaluator HEIGHT = new FitModeEvaluator() { // from class: com.google.android.material.transition.platform.FitModeEvaluators.2
@Override // com.google.android.material.transition.platform.FitModeEvaluator
public FitModeResult evaluate(float f, float f2, float f3, float f4, float f5, float f6, float f7) {
float lerp = TransitionUtils.lerp(f5, f7, f2, f3, f, true);
float f8 = lerp / f5;
float f9 = lerp / f7;
return new FitModeResult(f8, f9, f4 * f8, lerp, f6 * f9, lerp);
}
@Override // com.google.android.material.transition.platform.FitModeEvaluator
public boolean shouldMaskStartBounds(FitModeResult fitModeResult) {
return fitModeResult.currentStartWidth > fitModeResult.currentEndWidth;
}
@Override // com.google.android.material.transition.platform.FitModeEvaluator
public void applyMask(RectF rectF, float f, FitModeResult fitModeResult) {
float abs = (Math.abs(fitModeResult.currentEndWidth - fitModeResult.currentStartWidth) / 2.0f) * f;
rectF.left += abs;
rectF.right -= abs;
}
};
static FitModeEvaluator get(int i, boolean z, RectF rectF, RectF rectF2) {
if (i == 0) {
return shouldAutoFitToWidth(z, rectF, rectF2) ? WIDTH : HEIGHT;
}
if (i == 1) {
return WIDTH;
}
if (i == 2) {
return HEIGHT;
}
throw new IllegalArgumentException("Invalid fit mode: " + i);
}
private static boolean shouldAutoFitToWidth(boolean z, RectF rectF, RectF rectF2) {
float width = rectF.width();
float height = rectF.height();
float width2 = rectF2.width();
float height2 = rectF2.height();
float f = (height2 * width) / width2;
float f2 = (width2 * height) / width;
if (z) {
if (f >= height) {
return true;
}
} else if (f2 >= height2) {
return true;
}
return false;
}
private FitModeEvaluators() {
}
}

View File

@ -0,0 +1,20 @@
package com.google.android.material.transition.platform;
/* loaded from: classes.dex */
class FitModeResult {
final float currentEndHeight;
final float currentEndWidth;
final float currentStartHeight;
final float currentStartWidth;
final float endScale;
final float startScale;
FitModeResult(float f, float f2, float f3, float f4, float f5, float f6) {
this.startScale = f;
this.endScale = f2;
this.currentStartWidth = f3;
this.currentStartHeight = f4;
this.currentEndWidth = f5;
this.currentEndHeight = f6;
}
}

View File

@ -0,0 +1,21 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.transition.TransitionValues;
import android.transition.Visibility;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class Hold extends Visibility {
@Override // android.transition.Visibility
public Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return ValueAnimator.ofFloat(0.0f);
}
@Override // android.transition.Visibility
public Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return ValueAnimator.ofFloat(0.0f);
}
}

View File

@ -0,0 +1,49 @@
package com.google.android.material.transition.platform;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.RectF;
import android.graphics.Region;
import android.os.Build;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.ShapeAppearancePathProvider;
import com.google.android.material.transition.platform.MaterialContainerTransform;
/* loaded from: classes.dex */
class MaskEvaluator {
private ShapeAppearanceModel currentShapeAppearanceModel;
private final Path path = new Path();
private final Path startPath = new Path();
private final Path endPath = new Path();
private final ShapeAppearancePathProvider pathProvider = ShapeAppearancePathProvider.getInstance();
ShapeAppearanceModel getCurrentShapeAppearanceModel() {
return this.currentShapeAppearanceModel;
}
Path getPath() {
return this.path;
}
MaskEvaluator() {
}
void evaluate(float f, ShapeAppearanceModel shapeAppearanceModel, ShapeAppearanceModel shapeAppearanceModel2, RectF rectF, RectF rectF2, RectF rectF3, MaterialContainerTransform.ProgressThresholds progressThresholds) {
ShapeAppearanceModel lerp = TransitionUtils.lerp(shapeAppearanceModel, shapeAppearanceModel2, rectF, rectF3, progressThresholds.getStart(), progressThresholds.getEnd(), f);
this.currentShapeAppearanceModel = lerp;
this.pathProvider.calculatePath(lerp, 1.0f, rectF2, this.startPath);
this.pathProvider.calculatePath(this.currentShapeAppearanceModel, 1.0f, rectF3, this.endPath);
if (Build.VERSION.SDK_INT >= 23) {
this.path.op(this.startPath, this.endPath, Path.Op.UNION);
}
}
void clip(Canvas canvas) {
if (Build.VERSION.SDK_INT >= 23) {
canvas.clipPath(this.path);
} else {
canvas.clipPath(this.startPath);
canvas.clipPath(this.endPath, Region.Op.UNION);
}
}
}

View File

@ -0,0 +1,24 @@
package com.google.android.material.transition.platform;
import android.graphics.Path;
import android.graphics.PointF;
import android.transition.PathMotion;
/* loaded from: classes.dex */
public final class MaterialArcMotion extends PathMotion {
@Override // android.transition.PathMotion
public Path getPath(float f, float f2, float f3, float f4) {
Path path = new Path();
path.moveTo(f, f2);
PointF controlPoint = getControlPoint(f, f2, f3, f4);
path.quadTo(controlPoint.x, controlPoint.y, f3, f4);
return path;
}
private static PointF getControlPoint(float f, float f2, float f3, float f4) {
if (f2 > f4) {
return new PointF(f3, f2);
}
return new PointF(f, f4);
}
}

View File

@ -0,0 +1,856 @@
package com.google.android.material.transition.platform;
import android.R;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.PointF;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.transition.ArcMotion;
import android.transition.PathMotion;
import android.transition.Transition;
import android.transition.TransitionValues;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.core.util.Preconditions;
import androidx.core.view.InputDeviceCompat;
import androidx.core.view.ViewCompat;
import com.google.android.material.animation.AnimationUtils;
import com.google.android.material.canvas.CanvasCompat;
import com.google.android.material.internal.ViewUtils;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.Shapeable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public final class MaterialContainerTransform extends Transition {
private static final ProgressThresholdsGroup DEFAULT_RETURN_THRESHOLDS;
private static final ProgressThresholdsGroup DEFAULT_RETURN_THRESHOLDS_ARC;
private static final float ELEVATION_NOT_SET = -1.0f;
public static final int FADE_MODE_CROSS = 2;
public static final int FADE_MODE_IN = 0;
public static final int FADE_MODE_OUT = 1;
public static final int FADE_MODE_THROUGH = 3;
public static final int FIT_MODE_AUTO = 0;
public static final int FIT_MODE_HEIGHT = 2;
public static final int FIT_MODE_WIDTH = 1;
private static final String TAG = "MaterialContainerTransform";
public static final int TRANSITION_DIRECTION_AUTO = 0;
public static final int TRANSITION_DIRECTION_ENTER = 1;
public static final int TRANSITION_DIRECTION_RETURN = 2;
private boolean appliedThemeValues;
private int containerColor;
private boolean drawDebugEnabled;
private int drawingViewId;
private boolean elevationShadowEnabled;
private int endContainerColor;
private float endElevation;
private ShapeAppearanceModel endShapeAppearanceModel;
private View endView;
private int endViewId;
private int fadeMode;
private ProgressThresholds fadeProgressThresholds;
private int fitMode;
private boolean holdAtEndEnabled;
private boolean pathMotionCustom;
private ProgressThresholds scaleMaskProgressThresholds;
private ProgressThresholds scaleProgressThresholds;
private int scrimColor;
private ProgressThresholds shapeMaskProgressThresholds;
private int startContainerColor;
private float startElevation;
private ShapeAppearanceModel startShapeAppearanceModel;
private View startView;
private int startViewId;
private int transitionDirection;
private static final String PROP_BOUNDS = "materialContainerTransition:bounds";
private static final String PROP_SHAPE_APPEARANCE = "materialContainerTransition:shapeAppearance";
private static final String[] TRANSITION_PROPS = {PROP_BOUNDS, PROP_SHAPE_APPEARANCE};
private static final ProgressThresholdsGroup DEFAULT_ENTER_THRESHOLDS = new ProgressThresholdsGroup(new ProgressThresholds(0.0f, 0.25f), new ProgressThresholds(0.0f, 1.0f), new ProgressThresholds(0.0f, 1.0f), new ProgressThresholds(0.0f, 0.75f));
private static final ProgressThresholdsGroup DEFAULT_ENTER_THRESHOLDS_ARC = new ProgressThresholdsGroup(new ProgressThresholds(0.1f, 0.4f), new ProgressThresholds(0.1f, 1.0f), new ProgressThresholds(0.1f, 1.0f), new ProgressThresholds(0.1f, 0.9f));
@Retention(RetentionPolicy.SOURCE)
public @interface FadeMode {
}
@Retention(RetentionPolicy.SOURCE)
public @interface FitMode {
}
@Retention(RetentionPolicy.SOURCE)
public @interface TransitionDirection {
}
public int getContainerColor() {
return this.containerColor;
}
public int getDrawingViewId() {
return this.drawingViewId;
}
public int getEndContainerColor() {
return this.endContainerColor;
}
public float getEndElevation() {
return this.endElevation;
}
public ShapeAppearanceModel getEndShapeAppearanceModel() {
return this.endShapeAppearanceModel;
}
public View getEndView() {
return this.endView;
}
public int getEndViewId() {
return this.endViewId;
}
public int getFadeMode() {
return this.fadeMode;
}
public ProgressThresholds getFadeProgressThresholds() {
return this.fadeProgressThresholds;
}
public int getFitMode() {
return this.fitMode;
}
public ProgressThresholds getScaleMaskProgressThresholds() {
return this.scaleMaskProgressThresholds;
}
public ProgressThresholds getScaleProgressThresholds() {
return this.scaleProgressThresholds;
}
public int getScrimColor() {
return this.scrimColor;
}
public ProgressThresholds getShapeMaskProgressThresholds() {
return this.shapeMaskProgressThresholds;
}
public int getStartContainerColor() {
return this.startContainerColor;
}
public float getStartElevation() {
return this.startElevation;
}
public ShapeAppearanceModel getStartShapeAppearanceModel() {
return this.startShapeAppearanceModel;
}
public View getStartView() {
return this.startView;
}
public int getStartViewId() {
return this.startViewId;
}
public int getTransitionDirection() {
return this.transitionDirection;
}
@Override // android.transition.Transition
public String[] getTransitionProperties() {
return TRANSITION_PROPS;
}
public boolean isDrawDebugEnabled() {
return this.drawDebugEnabled;
}
public boolean isElevationShadowEnabled() {
return this.elevationShadowEnabled;
}
public boolean isHoldAtEndEnabled() {
return this.holdAtEndEnabled;
}
public void setAllContainerColors(int i) {
this.containerColor = i;
this.startContainerColor = i;
this.endContainerColor = i;
}
public void setContainerColor(int i) {
this.containerColor = i;
}
public void setDrawDebugEnabled(boolean z) {
this.drawDebugEnabled = z;
}
public void setDrawingViewId(int i) {
this.drawingViewId = i;
}
public void setElevationShadowEnabled(boolean z) {
this.elevationShadowEnabled = z;
}
public void setEndContainerColor(int i) {
this.endContainerColor = i;
}
public void setEndElevation(float f) {
this.endElevation = f;
}
public void setEndShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
this.endShapeAppearanceModel = shapeAppearanceModel;
}
public void setEndView(View view) {
this.endView = view;
}
public void setEndViewId(int i) {
this.endViewId = i;
}
public void setFadeMode(int i) {
this.fadeMode = i;
}
public void setFadeProgressThresholds(ProgressThresholds progressThresholds) {
this.fadeProgressThresholds = progressThresholds;
}
public void setFitMode(int i) {
this.fitMode = i;
}
public void setHoldAtEndEnabled(boolean z) {
this.holdAtEndEnabled = z;
}
public void setScaleMaskProgressThresholds(ProgressThresholds progressThresholds) {
this.scaleMaskProgressThresholds = progressThresholds;
}
public void setScaleProgressThresholds(ProgressThresholds progressThresholds) {
this.scaleProgressThresholds = progressThresholds;
}
public void setScrimColor(int i) {
this.scrimColor = i;
}
public void setShapeMaskProgressThresholds(ProgressThresholds progressThresholds) {
this.shapeMaskProgressThresholds = progressThresholds;
}
public void setStartContainerColor(int i) {
this.startContainerColor = i;
}
public void setStartElevation(float f) {
this.startElevation = f;
}
public void setStartShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
this.startShapeAppearanceModel = shapeAppearanceModel;
}
public void setStartView(View view) {
this.startView = view;
}
public void setStartViewId(int i) {
this.startViewId = i;
}
public void setTransitionDirection(int i) {
this.transitionDirection = i;
}
static {
DEFAULT_RETURN_THRESHOLDS = new ProgressThresholdsGroup(new ProgressThresholds(0.6f, 0.9f), new ProgressThresholds(0.0f, 1.0f), new ProgressThresholds(0.0f, 0.9f), new ProgressThresholds(0.3f, 0.9f));
DEFAULT_RETURN_THRESHOLDS_ARC = new ProgressThresholdsGroup(new ProgressThresholds(0.6f, 0.9f), new ProgressThresholds(0.0f, 0.9f), new ProgressThresholds(0.0f, 0.9f), new ProgressThresholds(0.2f, 0.9f));
}
public MaterialContainerTransform() {
this.drawDebugEnabled = false;
this.holdAtEndEnabled = false;
this.pathMotionCustom = false;
this.appliedThemeValues = false;
this.drawingViewId = R.id.content;
this.startViewId = -1;
this.endViewId = -1;
this.containerColor = 0;
this.startContainerColor = 0;
this.endContainerColor = 0;
this.scrimColor = 1375731712;
this.transitionDirection = 0;
this.fadeMode = 0;
this.fitMode = 0;
this.elevationShadowEnabled = Build.VERSION.SDK_INT >= 28;
this.startElevation = ELEVATION_NOT_SET;
this.endElevation = ELEVATION_NOT_SET;
}
public MaterialContainerTransform(Context context, boolean z) {
this.drawDebugEnabled = false;
this.holdAtEndEnabled = false;
this.pathMotionCustom = false;
this.appliedThemeValues = false;
this.drawingViewId = R.id.content;
this.startViewId = -1;
this.endViewId = -1;
this.containerColor = 0;
this.startContainerColor = 0;
this.endContainerColor = 0;
this.scrimColor = 1375731712;
this.transitionDirection = 0;
this.fadeMode = 0;
this.fitMode = 0;
this.elevationShadowEnabled = Build.VERSION.SDK_INT >= 28;
this.startElevation = ELEVATION_NOT_SET;
this.endElevation = ELEVATION_NOT_SET;
maybeApplyThemeValues(context, z);
this.appliedThemeValues = true;
}
@Override // android.transition.Transition
public void setPathMotion(PathMotion pathMotion) {
super.setPathMotion(pathMotion);
this.pathMotionCustom = true;
}
@Override // android.transition.Transition
public void captureStartValues(TransitionValues transitionValues) {
captureValues(transitionValues, this.startView, this.startViewId, this.startShapeAppearanceModel);
}
@Override // android.transition.Transition
public void captureEndValues(TransitionValues transitionValues) {
captureValues(transitionValues, this.endView, this.endViewId, this.endShapeAppearanceModel);
}
private static void captureValues(TransitionValues transitionValues, View view, int i, ShapeAppearanceModel shapeAppearanceModel) {
if (i != -1) {
transitionValues.view = TransitionUtils.findDescendantOrAncestorById(transitionValues.view, i);
} else if (view != null) {
transitionValues.view = view;
} else if (transitionValues.view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view) instanceof View) {
View view2 = (View) transitionValues.view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view);
transitionValues.view.setTag(com.google.android.material.R.id.mtrl_motion_snapshot_view, null);
transitionValues.view = view2;
}
View view3 = transitionValues.view;
if (!ViewCompat.isLaidOut(view3) && view3.getWidth() == 0 && view3.getHeight() == 0) {
return;
}
RectF relativeBounds = view3.getParent() == null ? TransitionUtils.getRelativeBounds(view3) : TransitionUtils.getLocationOnScreen(view3);
transitionValues.values.put(PROP_BOUNDS, relativeBounds);
transitionValues.values.put(PROP_SHAPE_APPEARANCE, captureShapeAppearance(view3, relativeBounds, shapeAppearanceModel));
}
private static ShapeAppearanceModel captureShapeAppearance(View view, RectF rectF, ShapeAppearanceModel shapeAppearanceModel) {
return TransitionUtils.convertToRelativeCornerSizes(getShapeAppearance(view, shapeAppearanceModel), rectF);
}
/* JADX WARN: Multi-variable type inference failed */
private static ShapeAppearanceModel getShapeAppearance(View view, ShapeAppearanceModel shapeAppearanceModel) {
if (shapeAppearanceModel != null) {
return shapeAppearanceModel;
}
if (view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view) instanceof ShapeAppearanceModel) {
return (ShapeAppearanceModel) view.getTag(com.google.android.material.R.id.mtrl_motion_snapshot_view);
}
Context context = view.getContext();
int transitionShapeAppearanceResId = getTransitionShapeAppearanceResId(context);
if (transitionShapeAppearanceResId != -1) {
return ShapeAppearanceModel.builder(context, transitionShapeAppearanceResId, 0).build();
}
if (view instanceof Shapeable) {
return ((Shapeable) view).getShapeAppearanceModel();
}
return ShapeAppearanceModel.builder().build();
}
private static int getTransitionShapeAppearanceResId(Context context) {
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(new int[]{com.google.android.material.R.attr.transitionShapeAppearance});
int resourceId = obtainStyledAttributes.getResourceId(0, -1);
obtainStyledAttributes.recycle();
return resourceId;
}
@Override // android.transition.Transition
public Animator createAnimator(ViewGroup viewGroup, TransitionValues transitionValues, TransitionValues transitionValues2) {
final View findAncestorById;
View view;
if (transitionValues != null && transitionValues2 != null) {
RectF rectF = (RectF) transitionValues.values.get(PROP_BOUNDS);
ShapeAppearanceModel shapeAppearanceModel = (ShapeAppearanceModel) transitionValues.values.get(PROP_SHAPE_APPEARANCE);
if (rectF == null || shapeAppearanceModel == null) {
Log.w(TAG, "Skipping due to null start bounds. Ensure start view is laid out and measured.");
} else {
RectF rectF2 = (RectF) transitionValues2.values.get(PROP_BOUNDS);
ShapeAppearanceModel shapeAppearanceModel2 = (ShapeAppearanceModel) transitionValues2.values.get(PROP_SHAPE_APPEARANCE);
if (rectF2 == null || shapeAppearanceModel2 == null) {
Log.w(TAG, "Skipping due to null end bounds. Ensure end view is laid out and measured.");
return null;
}
final View view2 = transitionValues.view;
final View view3 = transitionValues2.view;
View view4 = view3.getParent() != null ? view3 : view2;
if (this.drawingViewId == view4.getId()) {
findAncestorById = (View) view4.getParent();
view = view4;
} else {
findAncestorById = TransitionUtils.findAncestorById(view4, this.drawingViewId);
view = null;
}
RectF locationOnScreen = TransitionUtils.getLocationOnScreen(findAncestorById);
float f = -locationOnScreen.left;
float f2 = -locationOnScreen.top;
RectF calculateDrawableBounds = calculateDrawableBounds(findAncestorById, view, f, f2);
rectF.offset(f, f2);
rectF2.offset(f, f2);
boolean isEntering = isEntering(rectF, rectF2);
if (!this.appliedThemeValues) {
maybeApplyThemeValues(view4.getContext(), isEntering);
}
final TransitionDrawable transitionDrawable = new TransitionDrawable(getPathMotion(), view2, rectF, shapeAppearanceModel, getElevationOrDefault(this.startElevation, view2), view3, rectF2, shapeAppearanceModel2, getElevationOrDefault(this.endElevation, view3), this.containerColor, this.startContainerColor, this.endContainerColor, this.scrimColor, isEntering, this.elevationShadowEnabled, FadeModeEvaluators.get(this.fadeMode, isEntering), FitModeEvaluators.get(this.fitMode, isEntering, rectF, rectF2), buildThresholdsGroup(isEntering), this.drawDebugEnabled);
transitionDrawable.setBounds(Math.round(calculateDrawableBounds.left), Math.round(calculateDrawableBounds.top), Math.round(calculateDrawableBounds.right), Math.round(calculateDrawableBounds.bottom));
ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f);
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.transition.platform.MaterialContainerTransform.1
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
public void onAnimationUpdate(ValueAnimator valueAnimator) {
transitionDrawable.setProgress(valueAnimator.getAnimatedFraction());
}
});
addListener(new TransitionListenerAdapter() { // from class: com.google.android.material.transition.platform.MaterialContainerTransform.2
@Override // com.google.android.material.transition.platform.TransitionListenerAdapter, android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
ViewUtils.getOverlay(findAncestorById).add(transitionDrawable);
view2.setAlpha(0.0f);
view3.setAlpha(0.0f);
}
@Override // com.google.android.material.transition.platform.TransitionListenerAdapter, android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
MaterialContainerTransform.this.removeListener(this);
if (MaterialContainerTransform.this.holdAtEndEnabled) {
return;
}
view2.setAlpha(1.0f);
view3.setAlpha(1.0f);
ViewUtils.getOverlay(findAncestorById).remove(transitionDrawable);
}
});
return ofFloat;
}
}
return null;
}
private void maybeApplyThemeValues(Context context, boolean z) {
TransitionUtils.maybeApplyThemeInterpolator(this, context, com.google.android.material.R.attr.motionEasingEmphasizedInterpolator, AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR);
TransitionUtils.maybeApplyThemeDuration(this, context, z ? com.google.android.material.R.attr.motionDurationLong2 : com.google.android.material.R.attr.motionDurationMedium4);
if (this.pathMotionCustom) {
return;
}
TransitionUtils.maybeApplyThemePath(this, context, com.google.android.material.R.attr.motionPath);
}
private static float getElevationOrDefault(float f, View view) {
return f != ELEVATION_NOT_SET ? f : ViewCompat.getElevation(view);
}
private static RectF calculateDrawableBounds(View view, View view2, float f, float f2) {
if (view2 != null) {
RectF locationOnScreen = TransitionUtils.getLocationOnScreen(view2);
locationOnScreen.offset(f, f2);
return locationOnScreen;
}
return new RectF(0.0f, 0.0f, view.getWidth(), view.getHeight());
}
private boolean isEntering(RectF rectF, RectF rectF2) {
int i = this.transitionDirection;
if (i == 0) {
return TransitionUtils.calculateArea(rectF2) > TransitionUtils.calculateArea(rectF);
}
if (i == 1) {
return true;
}
if (i == 2) {
return false;
}
throw new IllegalArgumentException("Invalid transition direction: " + this.transitionDirection);
}
private ProgressThresholdsGroup buildThresholdsGroup(boolean z) {
PathMotion pathMotion = getPathMotion();
if ((pathMotion instanceof ArcMotion) || (pathMotion instanceof MaterialArcMotion)) {
return getThresholdsOrDefault(z, DEFAULT_ENTER_THRESHOLDS_ARC, DEFAULT_RETURN_THRESHOLDS_ARC);
}
return getThresholdsOrDefault(z, DEFAULT_ENTER_THRESHOLDS, DEFAULT_RETURN_THRESHOLDS);
}
private ProgressThresholdsGroup getThresholdsOrDefault(boolean z, ProgressThresholdsGroup progressThresholdsGroup, ProgressThresholdsGroup progressThresholdsGroup2) {
if (!z) {
progressThresholdsGroup = progressThresholdsGroup2;
}
return new ProgressThresholdsGroup((ProgressThresholds) TransitionUtils.defaultIfNull(this.fadeProgressThresholds, progressThresholdsGroup.fade), (ProgressThresholds) TransitionUtils.defaultIfNull(this.scaleProgressThresholds, progressThresholdsGroup.scale), (ProgressThresholds) TransitionUtils.defaultIfNull(this.scaleMaskProgressThresholds, progressThresholdsGroup.scaleMask), (ProgressThresholds) TransitionUtils.defaultIfNull(this.shapeMaskProgressThresholds, progressThresholdsGroup.shapeMask));
}
private static final class TransitionDrawable extends Drawable {
private static final int COMPAT_SHADOW_COLOR = -7829368;
private static final int SHADOW_COLOR = 754974720;
private static final float SHADOW_DX_MULTIPLIER_ADJUSTMENT = 0.3f;
private static final float SHADOW_DY_MULTIPLIER_ADJUSTMENT = 1.5f;
private final MaterialShapeDrawable compatShadowDrawable;
private final Paint containerPaint;
private float currentElevation;
private float currentElevationDy;
private final RectF currentEndBounds;
private final RectF currentEndBoundsMasked;
private RectF currentMaskBounds;
private final RectF currentStartBounds;
private final RectF currentStartBoundsMasked;
private final Paint debugPaint;
private final Path debugPath;
private final float displayHeight;
private final float displayWidth;
private final boolean drawDebugEnabled;
private final boolean elevationShadowEnabled;
private final RectF endBounds;
private final Paint endContainerPaint;
private final float endElevation;
private final ShapeAppearanceModel endShapeAppearanceModel;
private final View endView;
private final boolean entering;
private final FadeModeEvaluator fadeModeEvaluator;
private FadeModeResult fadeModeResult;
private final FitModeEvaluator fitModeEvaluator;
private FitModeResult fitModeResult;
private final MaskEvaluator maskEvaluator;
private final float motionPathLength;
private final PathMeasure motionPathMeasure;
private final float[] motionPathPosition;
private float progress;
private final ProgressThresholdsGroup progressThresholds;
private final Paint scrimPaint;
private final Paint shadowPaint;
private final RectF startBounds;
private final Paint startContainerPaint;
private final float startElevation;
private final ShapeAppearanceModel startShapeAppearanceModel;
private final View startView;
@Override // android.graphics.drawable.Drawable
public int getOpacity() {
return -3;
}
private TransitionDrawable(PathMotion pathMotion, View view, RectF rectF, ShapeAppearanceModel shapeAppearanceModel, float f, View view2, RectF rectF2, ShapeAppearanceModel shapeAppearanceModel2, float f2, int i, int i2, int i3, int i4, boolean z, boolean z2, FadeModeEvaluator fadeModeEvaluator, FitModeEvaluator fitModeEvaluator, ProgressThresholdsGroup progressThresholdsGroup, boolean z3) {
Paint paint = new Paint();
this.containerPaint = paint;
Paint paint2 = new Paint();
this.startContainerPaint = paint2;
Paint paint3 = new Paint();
this.endContainerPaint = paint3;
this.shadowPaint = new Paint();
Paint paint4 = new Paint();
this.scrimPaint = paint4;
this.maskEvaluator = new MaskEvaluator();
this.motionPathPosition = new float[]{rectF.centerX(), rectF.top};
MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable();
this.compatShadowDrawable = materialShapeDrawable;
Paint paint5 = new Paint();
this.debugPaint = paint5;
this.debugPath = new Path();
this.startView = view;
this.startBounds = rectF;
this.startShapeAppearanceModel = shapeAppearanceModel;
this.startElevation = f;
this.endView = view2;
this.endBounds = rectF2;
this.endShapeAppearanceModel = shapeAppearanceModel2;
this.endElevation = f2;
this.entering = z;
this.elevationShadowEnabled = z2;
this.fadeModeEvaluator = fadeModeEvaluator;
this.fitModeEvaluator = fitModeEvaluator;
this.progressThresholds = progressThresholdsGroup;
this.drawDebugEnabled = z3;
WindowManager windowManager = (WindowManager) view.getContext().getSystemService("window");
windowManager.getDefaultDisplay().getMetrics(new DisplayMetrics());
this.displayWidth = r12.widthPixels;
this.displayHeight = r12.heightPixels;
paint.setColor(i);
paint2.setColor(i2);
paint3.setColor(i3);
materialShapeDrawable.setFillColor(ColorStateList.valueOf(0));
materialShapeDrawable.setShadowCompatibilityMode(2);
materialShapeDrawable.setShadowBitmapDrawingEnable(false);
materialShapeDrawable.setShadowColor(COMPAT_SHADOW_COLOR);
RectF rectF3 = new RectF(rectF);
this.currentStartBounds = rectF3;
this.currentStartBoundsMasked = new RectF(rectF3);
RectF rectF4 = new RectF(rectF3);
this.currentEndBounds = rectF4;
this.currentEndBoundsMasked = new RectF(rectF4);
PointF motionPathPoint = getMotionPathPoint(rectF);
PointF motionPathPoint2 = getMotionPathPoint(rectF2);
PathMeasure pathMeasure = new PathMeasure(pathMotion.getPath(motionPathPoint.x, motionPathPoint.y, motionPathPoint2.x, motionPathPoint2.y), false);
this.motionPathMeasure = pathMeasure;
this.motionPathLength = pathMeasure.getLength();
paint4.setStyle(Paint.Style.FILL);
paint4.setShader(TransitionUtils.createColorShader(i4));
paint5.setStyle(Paint.Style.STROKE);
paint5.setStrokeWidth(10.0f);
updateProgress(0.0f);
}
@Override // android.graphics.drawable.Drawable
public void draw(Canvas canvas) {
if (this.scrimPaint.getAlpha() > 0) {
canvas.drawRect(getBounds(), this.scrimPaint);
}
int save = this.drawDebugEnabled ? canvas.save() : -1;
if (this.elevationShadowEnabled && this.currentElevation > 0.0f) {
drawElevationShadow(canvas);
}
this.maskEvaluator.clip(canvas);
maybeDrawContainerColor(canvas, this.containerPaint);
if (this.fadeModeResult.endOnTop) {
drawStartView(canvas);
drawEndView(canvas);
} else {
drawEndView(canvas);
drawStartView(canvas);
}
if (this.drawDebugEnabled) {
canvas.restoreToCount(save);
drawDebugCumulativePath(canvas, this.currentStartBounds, this.debugPath, -65281);
drawDebugRect(canvas, this.currentStartBoundsMasked, InputDeviceCompat.SOURCE_ANY);
drawDebugRect(canvas, this.currentStartBounds, -16711936);
drawDebugRect(canvas, this.currentEndBoundsMasked, -16711681);
drawDebugRect(canvas, this.currentEndBounds, -16776961);
}
}
private void drawElevationShadow(Canvas canvas) {
canvas.save();
canvas.clipPath(this.maskEvaluator.getPath(), Region.Op.DIFFERENCE);
if (Build.VERSION.SDK_INT > 28) {
drawElevationShadowWithPaintShadowLayer(canvas);
} else {
drawElevationShadowWithMaterialShapeDrawable(canvas);
}
canvas.restore();
}
private void drawElevationShadowWithPaintShadowLayer(Canvas canvas) {
ShapeAppearanceModel currentShapeAppearanceModel = this.maskEvaluator.getCurrentShapeAppearanceModel();
if (currentShapeAppearanceModel.isRoundRect(this.currentMaskBounds)) {
float cornerSize = currentShapeAppearanceModel.getTopLeftCornerSize().getCornerSize(this.currentMaskBounds);
canvas.drawRoundRect(this.currentMaskBounds, cornerSize, cornerSize, this.shadowPaint);
} else {
canvas.drawPath(this.maskEvaluator.getPath(), this.shadowPaint);
}
}
private void drawElevationShadowWithMaterialShapeDrawable(Canvas canvas) {
this.compatShadowDrawable.setBounds((int) this.currentMaskBounds.left, (int) this.currentMaskBounds.top, (int) this.currentMaskBounds.right, (int) this.currentMaskBounds.bottom);
this.compatShadowDrawable.setElevation(this.currentElevation);
this.compatShadowDrawable.setShadowVerticalOffset((int) this.currentElevationDy);
this.compatShadowDrawable.setShapeAppearanceModel(this.maskEvaluator.getCurrentShapeAppearanceModel());
this.compatShadowDrawable.draw(canvas);
}
private void drawStartView(Canvas canvas) {
maybeDrawContainerColor(canvas, this.startContainerPaint);
TransitionUtils.transform(canvas, getBounds(), this.currentStartBounds.left, this.currentStartBounds.top, this.fitModeResult.startScale, this.fadeModeResult.startAlpha, new CanvasCompat.CanvasOperation() { // from class: com.google.android.material.transition.platform.MaterialContainerTransform.TransitionDrawable.1
@Override // com.google.android.material.canvas.CanvasCompat.CanvasOperation
public void run(Canvas canvas2) {
TransitionDrawable.this.startView.draw(canvas2);
}
});
}
private void drawEndView(Canvas canvas) {
maybeDrawContainerColor(canvas, this.endContainerPaint);
TransitionUtils.transform(canvas, getBounds(), this.currentEndBounds.left, this.currentEndBounds.top, this.fitModeResult.endScale, this.fadeModeResult.endAlpha, new CanvasCompat.CanvasOperation() { // from class: com.google.android.material.transition.platform.MaterialContainerTransform.TransitionDrawable.2
@Override // com.google.android.material.canvas.CanvasCompat.CanvasOperation
public void run(Canvas canvas2) {
TransitionDrawable.this.endView.draw(canvas2);
}
});
}
private void maybeDrawContainerColor(Canvas canvas, Paint paint) {
if (paint.getColor() == 0 || paint.getAlpha() <= 0) {
return;
}
canvas.drawRect(getBounds(), paint);
}
@Override // android.graphics.drawable.Drawable
public void setAlpha(int i) {
throw new UnsupportedOperationException("Setting alpha on is not supported");
}
@Override // android.graphics.drawable.Drawable
public void setColorFilter(ColorFilter colorFilter) {
throw new UnsupportedOperationException("Setting a color filter is not supported");
}
/* JADX INFO: Access modifiers changed from: private */
public void setProgress(float f) {
if (this.progress != f) {
updateProgress(f);
}
}
private void updateProgress(float f) {
float f2;
float f3;
this.progress = f;
this.scrimPaint.setAlpha((int) (this.entering ? TransitionUtils.lerp(0.0f, 255.0f, f) : TransitionUtils.lerp(255.0f, 0.0f, f)));
this.motionPathMeasure.getPosTan(this.motionPathLength * f, this.motionPathPosition, null);
float[] fArr = this.motionPathPosition;
float f4 = fArr[0];
float f5 = fArr[1];
if (f > 1.0f || f < 0.0f) {
if (f > 1.0f) {
f3 = (f - 1.0f) / 0.00999999f;
f2 = 0.99f;
} else {
f2 = 0.01f;
f3 = (f / 0.01f) * MaterialContainerTransform.ELEVATION_NOT_SET;
}
this.motionPathMeasure.getPosTan(this.motionPathLength * f2, fArr, null);
float[] fArr2 = this.motionPathPosition;
f4 += (f4 - fArr2[0]) * f3;
f5 += (f5 - fArr2[1]) * f3;
}
float f6 = f4;
float f7 = f5;
FitModeResult evaluate = this.fitModeEvaluator.evaluate(f, ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scale.start))).floatValue(), ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scale.end))).floatValue(), this.startBounds.width(), this.startBounds.height(), this.endBounds.width(), this.endBounds.height());
this.fitModeResult = evaluate;
this.currentStartBounds.set(f6 - (evaluate.currentStartWidth / 2.0f), f7, (this.fitModeResult.currentStartWidth / 2.0f) + f6, this.fitModeResult.currentStartHeight + f7);
this.currentEndBounds.set(f6 - (this.fitModeResult.currentEndWidth / 2.0f), f7, f6 + (this.fitModeResult.currentEndWidth / 2.0f), this.fitModeResult.currentEndHeight + f7);
this.currentStartBoundsMasked.set(this.currentStartBounds);
this.currentEndBoundsMasked.set(this.currentEndBounds);
float floatValue = ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scaleMask.start))).floatValue();
float floatValue2 = ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.scaleMask.end))).floatValue();
boolean shouldMaskStartBounds = this.fitModeEvaluator.shouldMaskStartBounds(this.fitModeResult);
RectF rectF = shouldMaskStartBounds ? this.currentStartBoundsMasked : this.currentEndBoundsMasked;
float lerp = TransitionUtils.lerp(0.0f, 1.0f, floatValue, floatValue2, f);
if (!shouldMaskStartBounds) {
lerp = 1.0f - lerp;
}
this.fitModeEvaluator.applyMask(rectF, lerp, this.fitModeResult);
this.currentMaskBounds = new RectF(Math.min(this.currentStartBoundsMasked.left, this.currentEndBoundsMasked.left), Math.min(this.currentStartBoundsMasked.top, this.currentEndBoundsMasked.top), Math.max(this.currentStartBoundsMasked.right, this.currentEndBoundsMasked.right), Math.max(this.currentStartBoundsMasked.bottom, this.currentEndBoundsMasked.bottom));
this.maskEvaluator.evaluate(f, this.startShapeAppearanceModel, this.endShapeAppearanceModel, this.currentStartBounds, this.currentStartBoundsMasked, this.currentEndBoundsMasked, this.progressThresholds.shapeMask);
this.currentElevation = TransitionUtils.lerp(this.startElevation, this.endElevation, f);
float calculateElevationDxMultiplier = calculateElevationDxMultiplier(this.currentMaskBounds, this.displayWidth);
float calculateElevationDyMultiplier = calculateElevationDyMultiplier(this.currentMaskBounds, this.displayHeight);
float f8 = this.currentElevation;
float f9 = (int) (calculateElevationDyMultiplier * f8);
this.currentElevationDy = f9;
this.shadowPaint.setShadowLayer(f8, (int) (calculateElevationDxMultiplier * f8), f9, SHADOW_COLOR);
this.fadeModeResult = this.fadeModeEvaluator.evaluate(f, ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.fade.start))).floatValue(), ((Float) Preconditions.checkNotNull(Float.valueOf(this.progressThresholds.fade.end))).floatValue(), 0.35f);
if (this.startContainerPaint.getColor() != 0) {
this.startContainerPaint.setAlpha(this.fadeModeResult.startAlpha);
}
if (this.endContainerPaint.getColor() != 0) {
this.endContainerPaint.setAlpha(this.fadeModeResult.endAlpha);
}
invalidateSelf();
}
private static PointF getMotionPathPoint(RectF rectF) {
return new PointF(rectF.centerX(), rectF.top);
}
private static float calculateElevationDxMultiplier(RectF rectF, float f) {
return ((rectF.centerX() / (f / 2.0f)) - 1.0f) * SHADOW_DX_MULTIPLIER_ADJUSTMENT;
}
private static float calculateElevationDyMultiplier(RectF rectF, float f) {
return (rectF.centerY() / f) * SHADOW_DY_MULTIPLIER_ADJUSTMENT;
}
private void drawDebugCumulativePath(Canvas canvas, RectF rectF, Path path, int i) {
PointF motionPathPoint = getMotionPathPoint(rectF);
if (this.progress == 0.0f) {
path.reset();
path.moveTo(motionPathPoint.x, motionPathPoint.y);
} else {
path.lineTo(motionPathPoint.x, motionPathPoint.y);
this.debugPaint.setColor(i);
canvas.drawPath(path, this.debugPaint);
}
}
private void drawDebugRect(Canvas canvas, RectF rectF, int i) {
this.debugPaint.setColor(i);
canvas.drawRect(rectF, this.debugPaint);
}
}
public static class ProgressThresholds {
private final float end;
private final float start;
public float getEnd() {
return this.end;
}
public float getStart() {
return this.start;
}
public ProgressThresholds(float f, float f2) {
this.start = f;
this.end = f2;
}
}
private static class ProgressThresholdsGroup {
private final ProgressThresholds fade;
private final ProgressThresholds scale;
private final ProgressThresholds scaleMask;
private final ProgressThresholds shapeMask;
private ProgressThresholdsGroup(ProgressThresholds progressThresholds, ProgressThresholds progressThresholds2, ProgressThresholds progressThresholds3, ProgressThresholds progressThresholds4) {
this.fade = progressThresholds;
this.scale = progressThresholds2;
this.scaleMask = progressThresholds3;
this.shapeMask = progressThresholds4;
}
}
}

View File

@ -0,0 +1,210 @@
package com.google.android.material.transition.platform;
import android.app.Activity;
import android.app.SharedElementCallback;
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
import android.transition.Transition;
import android.view.View;
import android.view.Window;
import androidx.constraintlayout.core.widgets.analyzer.BasicMeasure;
import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat;
import com.google.android.material.R;
import com.google.android.material.internal.ContextUtils;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.Shapeable;
import java.lang.ref.WeakReference;
import java.util.List;
import java.util.Map;
/* loaded from: classes.dex */
public class MaterialContainerTransformSharedElementCallback extends SharedElementCallback {
private static WeakReference<View> capturedSharedElement;
private Rect returnEndBounds;
private boolean entering = true;
private boolean transparentWindowBackgroundEnabled = true;
private boolean sharedElementReenterTransitionEnabled = false;
private ShapeProvider shapeProvider = new ShapeableViewShapeProvider();
public interface ShapeProvider {
ShapeAppearanceModel provideShape(View view);
}
public ShapeProvider getShapeProvider() {
return this.shapeProvider;
}
public boolean isSharedElementReenterTransitionEnabled() {
return this.sharedElementReenterTransitionEnabled;
}
public boolean isTransparentWindowBackgroundEnabled() {
return this.transparentWindowBackgroundEnabled;
}
public void setShapeProvider(ShapeProvider shapeProvider) {
this.shapeProvider = shapeProvider;
}
public void setSharedElementReenterTransitionEnabled(boolean z) {
this.sharedElementReenterTransitionEnabled = z;
}
public void setTransparentWindowBackgroundEnabled(boolean z) {
this.transparentWindowBackgroundEnabled = z;
}
public static class ShapeableViewShapeProvider implements ShapeProvider {
/* JADX WARN: Multi-variable type inference failed */
@Override // com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback.ShapeProvider
public ShapeAppearanceModel provideShape(View view) {
if (view instanceof Shapeable) {
return ((Shapeable) view).getShapeAppearanceModel();
}
return null;
}
}
@Override // android.app.SharedElementCallback
public Parcelable onCaptureSharedElementSnapshot(View view, Matrix matrix, RectF rectF) {
capturedSharedElement = new WeakReference<>(view);
return super.onCaptureSharedElementSnapshot(view, matrix, rectF);
}
@Override // android.app.SharedElementCallback
public View onCreateSnapshotView(Context context, Parcelable parcelable) {
WeakReference<View> weakReference;
View view;
ShapeAppearanceModel provideShape;
View onCreateSnapshotView = super.onCreateSnapshotView(context, parcelable);
if (onCreateSnapshotView != null && (weakReference = capturedSharedElement) != null && this.shapeProvider != null && (view = weakReference.get()) != null && (provideShape = this.shapeProvider.provideShape(view)) != null) {
onCreateSnapshotView.setTag(R.id.mtrl_motion_snapshot_view, provideShape);
}
return onCreateSnapshotView;
}
@Override // android.app.SharedElementCallback
public void onMapSharedElements(List<String> list, Map<String, View> map) {
View view;
Activity activity;
if (list.isEmpty() || map.isEmpty() || (view = map.get(list.get(0))) == null || (activity = ContextUtils.getActivity(view.getContext())) == null) {
return;
}
Window window = activity.getWindow();
if (this.entering) {
setUpEnterTransform(window);
} else {
setUpReturnTransform(activity, window);
}
}
@Override // android.app.SharedElementCallback
public void onSharedElementStart(List<String> list, List<View> list2, List<View> list3) {
if (!list2.isEmpty() && !list3.isEmpty()) {
list2.get(0).setTag(R.id.mtrl_motion_snapshot_view, list3.get(0));
}
if (this.entering || list2.isEmpty() || this.returnEndBounds == null) {
return;
}
View view = list2.get(0);
view.measure(View.MeasureSpec.makeMeasureSpec(this.returnEndBounds.width(), BasicMeasure.EXACTLY), View.MeasureSpec.makeMeasureSpec(this.returnEndBounds.height(), BasicMeasure.EXACTLY));
view.layout(this.returnEndBounds.left, this.returnEndBounds.top, this.returnEndBounds.right, this.returnEndBounds.bottom);
}
@Override // android.app.SharedElementCallback
public void onSharedElementEnd(List<String> list, List<View> list2, List<View> list3) {
if (!list2.isEmpty() && (list2.get(0).getTag(R.id.mtrl_motion_snapshot_view) instanceof View)) {
list2.get(0).setTag(R.id.mtrl_motion_snapshot_view, null);
}
if (!this.entering && !list2.isEmpty()) {
this.returnEndBounds = TransitionUtils.getRelativeBoundsRect(list2.get(0));
}
this.entering = false;
}
private void setUpEnterTransform(final Window window) {
Transition sharedElementEnterTransition = window.getSharedElementEnterTransition();
if (sharedElementEnterTransition instanceof MaterialContainerTransform) {
MaterialContainerTransform materialContainerTransform = (MaterialContainerTransform) sharedElementEnterTransition;
if (!this.sharedElementReenterTransitionEnabled) {
window.setSharedElementReenterTransition(null);
}
if (this.transparentWindowBackgroundEnabled) {
updateBackgroundFadeDuration(window, materialContainerTransform);
materialContainerTransform.addListener(new TransitionListenerAdapter() { // from class: com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback.1
@Override // com.google.android.material.transition.platform.TransitionListenerAdapter, android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
MaterialContainerTransformSharedElementCallback.removeWindowBackground(window);
}
@Override // com.google.android.material.transition.platform.TransitionListenerAdapter, android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
MaterialContainerTransformSharedElementCallback.restoreWindowBackground(window);
}
});
}
}
}
private void setUpReturnTransform(final Activity activity, final Window window) {
Transition sharedElementReturnTransition = window.getSharedElementReturnTransition();
if (sharedElementReturnTransition instanceof MaterialContainerTransform) {
MaterialContainerTransform materialContainerTransform = (MaterialContainerTransform) sharedElementReturnTransition;
materialContainerTransform.setHoldAtEndEnabled(true);
materialContainerTransform.addListener(new TransitionListenerAdapter() { // from class: com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback.2
@Override // com.google.android.material.transition.platform.TransitionListenerAdapter, android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
View view;
if (MaterialContainerTransformSharedElementCallback.capturedSharedElement != null && (view = (View) MaterialContainerTransformSharedElementCallback.capturedSharedElement.get()) != null) {
view.setAlpha(1.0f);
WeakReference unused = MaterialContainerTransformSharedElementCallback.capturedSharedElement = null;
}
activity.finish();
activity.overridePendingTransition(0, 0);
}
});
if (this.transparentWindowBackgroundEnabled) {
updateBackgroundFadeDuration(window, materialContainerTransform);
materialContainerTransform.addListener(new TransitionListenerAdapter() { // from class: com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback.3
@Override // com.google.android.material.transition.platform.TransitionListenerAdapter, android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
MaterialContainerTransformSharedElementCallback.removeWindowBackground(window);
}
});
}
}
}
/* JADX INFO: Access modifiers changed from: private */
public static void removeWindowBackground(Window window) {
Drawable windowBackground = getWindowBackground(window);
if (windowBackground == null) {
return;
}
windowBackground.mutate().setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(0, BlendModeCompat.CLEAR));
}
/* JADX INFO: Access modifiers changed from: private */
public static void restoreWindowBackground(Window window) {
Drawable windowBackground = getWindowBackground(window);
if (windowBackground == null) {
return;
}
windowBackground.mutate().clearColorFilter();
}
private static Drawable getWindowBackground(Window window) {
return window.getDecorView().getBackground();
}
private static void updateBackgroundFadeDuration(Window window, MaterialContainerTransform materialContainerTransform) {
if (materialContainerTransform.getDuration() >= 0) {
window.setTransitionBackgroundFadeDuration(materialContainerTransform.getDuration());
}
}
}

View File

@ -0,0 +1,73 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.transition.TransitionValues;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class MaterialElevationScale extends MaterialVisibility<ScaleProvider> {
private static final float DEFAULT_SCALE = 0.85f;
private final boolean growing;
public boolean isGrowing() {
return this.growing;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.material.transition.platform.ScaleProvider, com.google.android.material.transition.platform.VisibilityAnimatorProvider] */
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ ScaleProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialElevationScale(boolean z) {
super(createPrimaryAnimatorProvider(z), createSecondaryAnimatorProvider());
this.growing = z;
}
private static ScaleProvider createPrimaryAnimatorProvider(boolean z) {
ScaleProvider scaleProvider = new ScaleProvider(z);
scaleProvider.setOutgoingEndScale(DEFAULT_SCALE);
scaleProvider.setIncomingStartScale(DEFAULT_SCALE);
return scaleProvider;
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
return new FadeProvider();
}
}

View File

@ -0,0 +1,92 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.transition.TransitionValues;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.R;
import com.google.android.material.animation.AnimationUtils;
/* loaded from: classes.dex */
public final class MaterialFade extends MaterialVisibility<FadeProvider> {
private static final float DEFAULT_FADE_END_THRESHOLD_ENTER = 0.3f;
private static final float DEFAULT_START_SCALE = 0.8f;
private static final int DEFAULT_THEMED_INCOMING_DURATION_ATTR = R.attr.motionDurationMedium4;
private static final int DEFAULT_THEMED_OUTGOING_DURATION_ATTR = R.attr.motionDurationShort3;
private static final int DEFAULT_THEMED_INCOMING_EASING_ATTR = R.attr.motionEasingEmphasizedDecelerateInterpolator;
private static final int DEFAULT_THEMED_OUTGOING_EASING_ATTR = R.attr.motionEasingEmphasizedAccelerateInterpolator;
@Override // com.google.android.material.transition.platform.MaterialVisibility
int getDurationThemeAttrResId(boolean z) {
return z ? DEFAULT_THEMED_INCOMING_DURATION_ATTR : DEFAULT_THEMED_OUTGOING_DURATION_ATTR;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
int getEasingThemeAttrResId(boolean z) {
return z ? DEFAULT_THEMED_INCOMING_EASING_ATTR : DEFAULT_THEMED_OUTGOING_EASING_ATTR;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.material.transition.platform.FadeProvider, com.google.android.material.transition.platform.VisibilityAnimatorProvider] */
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ FadeProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialFade() {
super(createPrimaryAnimatorProvider(), createSecondaryAnimatorProvider());
}
private static FadeProvider createPrimaryAnimatorProvider() {
FadeProvider fadeProvider = new FadeProvider();
fadeProvider.setIncomingEndThreshold(DEFAULT_FADE_END_THRESHOLD_ENTER);
return fadeProvider;
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
ScaleProvider scaleProvider = new ScaleProvider();
scaleProvider.setScaleOnDisappear(false);
scaleProvider.setIncomingStartScale(DEFAULT_START_SCALE);
return scaleProvider;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
TimeInterpolator getDefaultEasingInterpolator(boolean z) {
return AnimationUtils.LINEAR_INTERPOLATOR;
}
}

View File

@ -0,0 +1,80 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.transition.TransitionValues;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.R;
/* loaded from: classes.dex */
public final class MaterialFadeThrough extends MaterialVisibility<FadeThroughProvider> {
private static final float DEFAULT_START_SCALE = 0.92f;
private static final int DEFAULT_THEMED_DURATION_ATTR = R.attr.motionDurationLong1;
private static final int DEFAULT_THEMED_EASING_ATTR = R.attr.motionEasingEmphasizedInterpolator;
@Override // com.google.android.material.transition.platform.MaterialVisibility
int getDurationThemeAttrResId(boolean z) {
return DEFAULT_THEMED_DURATION_ATTR;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
int getEasingThemeAttrResId(boolean z) {
return DEFAULT_THEMED_EASING_ATTR;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.material.transition.platform.FadeThroughProvider, com.google.android.material.transition.platform.VisibilityAnimatorProvider] */
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ FadeThroughProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialFadeThrough() {
super(createPrimaryAnimatorProvider(), createSecondaryAnimatorProvider());
}
private static FadeThroughProvider createPrimaryAnimatorProvider() {
return new FadeThroughProvider();
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
ScaleProvider scaleProvider = new ScaleProvider();
scaleProvider.setScaleOnDisappear(false);
scaleProvider.setIncomingStartScale(DEFAULT_START_SCALE);
return scaleProvider;
}
}

View File

@ -0,0 +1,106 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.transition.TransitionValues;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.view.GravityCompat;
import com.google.android.material.R;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public final class MaterialSharedAxis extends MaterialVisibility<VisibilityAnimatorProvider> {
private static final int DEFAULT_THEMED_DURATION_ATTR = R.attr.motionDurationLong1;
private static final int DEFAULT_THEMED_EASING_ATTR = R.attr.motionEasingEmphasizedInterpolator;
public static final int X = 0;
public static final int Y = 1;
public static final int Z = 2;
private final int axis;
private final boolean forward;
@Retention(RetentionPolicy.SOURCE)
public @interface Axis {
}
public int getAxis() {
return this.axis;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
int getDurationThemeAttrResId(boolean z) {
return DEFAULT_THEMED_DURATION_ATTR;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
int getEasingThemeAttrResId(boolean z) {
return DEFAULT_THEMED_EASING_ATTR;
}
public boolean isForward() {
return this.forward;
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.addAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void clearAdditionalAnimatorProvider() {
super.clearAdditionalAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getPrimaryAnimatorProvider() {
return super.getPrimaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return super.getSecondaryAnimatorProvider();
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onAppear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility, android.transition.Visibility
public /* bridge */ /* synthetic */ Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return super.onDisappear(viewGroup, view, transitionValues, transitionValues2);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return super.removeAdditionalAnimatorProvider(visibilityAnimatorProvider);
}
@Override // com.google.android.material.transition.platform.MaterialVisibility
public /* bridge */ /* synthetic */ void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
super.setSecondaryAnimatorProvider(visibilityAnimatorProvider);
}
public MaterialSharedAxis(int i, boolean z) {
super(createPrimaryAnimatorProvider(i, z), createSecondaryAnimatorProvider());
this.axis = i;
this.forward = z;
}
private static VisibilityAnimatorProvider createPrimaryAnimatorProvider(int i, boolean z) {
if (i == 0) {
return new SlideDistanceProvider(z ? GravityCompat.END : GravityCompat.START);
}
if (i == 1) {
return new SlideDistanceProvider(z ? 80 : 48);
}
if (i == 2) {
return new ScaleProvider(z);
}
throw new IllegalArgumentException("Invalid axis: " + i);
}
private static VisibilityAnimatorProvider createSecondaryAnimatorProvider() {
return new FadeThroughProvider();
}
}

View File

@ -0,0 +1,108 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.TimeInterpolator;
import android.content.Context;
import android.transition.TransitionValues;
import android.transition.Visibility;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.animation.AnimationUtils;
import com.google.android.material.animation.AnimatorSetCompat;
import com.google.android.material.transition.platform.VisibilityAnimatorProvider;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
abstract class MaterialVisibility<P extends VisibilityAnimatorProvider> extends Visibility {
private final List<VisibilityAnimatorProvider> additionalAnimatorProviders = new ArrayList();
private final P primaryAnimatorProvider;
private VisibilityAnimatorProvider secondaryAnimatorProvider;
int getDurationThemeAttrResId(boolean z) {
return 0;
}
int getEasingThemeAttrResId(boolean z) {
return 0;
}
public P getPrimaryAnimatorProvider() {
return this.primaryAnimatorProvider;
}
public VisibilityAnimatorProvider getSecondaryAnimatorProvider() {
return this.secondaryAnimatorProvider;
}
public void setSecondaryAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
this.secondaryAnimatorProvider = visibilityAnimatorProvider;
}
protected MaterialVisibility(P p, VisibilityAnimatorProvider visibilityAnimatorProvider) {
this.primaryAnimatorProvider = p;
this.secondaryAnimatorProvider = visibilityAnimatorProvider;
}
public void addAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
this.additionalAnimatorProviders.add(visibilityAnimatorProvider);
}
public boolean removeAdditionalAnimatorProvider(VisibilityAnimatorProvider visibilityAnimatorProvider) {
return this.additionalAnimatorProviders.remove(visibilityAnimatorProvider);
}
public void clearAdditionalAnimatorProvider() {
this.additionalAnimatorProviders.clear();
}
@Override // android.transition.Visibility
public Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return createAnimator(viewGroup, view, true);
}
@Override // android.transition.Visibility
public Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
return createAnimator(viewGroup, view, false);
}
private Animator createAnimator(ViewGroup viewGroup, View view, boolean z) {
AnimatorSet animatorSet = new AnimatorSet();
ArrayList arrayList = new ArrayList();
addAnimatorIfNeeded(arrayList, this.primaryAnimatorProvider, viewGroup, view, z);
addAnimatorIfNeeded(arrayList, this.secondaryAnimatorProvider, viewGroup, view, z);
Iterator<VisibilityAnimatorProvider> it = this.additionalAnimatorProviders.iterator();
while (it.hasNext()) {
addAnimatorIfNeeded(arrayList, it.next(), viewGroup, view, z);
}
maybeApplyThemeValues(viewGroup.getContext(), z);
AnimatorSetCompat.playTogether(animatorSet, arrayList);
return animatorSet;
}
private static void addAnimatorIfNeeded(List<Animator> list, VisibilityAnimatorProvider visibilityAnimatorProvider, ViewGroup viewGroup, View view, boolean z) {
Animator createDisappear;
if (visibilityAnimatorProvider == null) {
return;
}
if (z) {
createDisappear = visibilityAnimatorProvider.createAppear(viewGroup, view);
} else {
createDisappear = visibilityAnimatorProvider.createDisappear(viewGroup, view);
}
if (createDisappear != null) {
list.add(createDisappear);
}
}
private void maybeApplyThemeValues(Context context, boolean z) {
TransitionUtils.maybeApplyThemeDuration(this, context, getDurationThemeAttrResId(z));
TransitionUtils.maybeApplyThemeInterpolator(this, context, getEasingThemeAttrResId(z), getDefaultEasingInterpolator(z));
}
TimeInterpolator getDefaultEasingInterpolator(boolean z) {
return AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR;
}
}

View File

@ -0,0 +1,113 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public final class ScaleProvider implements VisibilityAnimatorProvider {
private boolean growing;
private float incomingEndScale;
private float incomingStartScale;
private float outgoingEndScale;
private float outgoingStartScale;
private boolean scaleOnDisappear;
public float getIncomingEndScale() {
return this.incomingEndScale;
}
public float getIncomingStartScale() {
return this.incomingStartScale;
}
public float getOutgoingEndScale() {
return this.outgoingEndScale;
}
public float getOutgoingStartScale() {
return this.outgoingStartScale;
}
public boolean isGrowing() {
return this.growing;
}
public boolean isScaleOnDisappear() {
return this.scaleOnDisappear;
}
public void setGrowing(boolean z) {
this.growing = z;
}
public void setIncomingEndScale(float f) {
this.incomingEndScale = f;
}
public void setIncomingStartScale(float f) {
this.incomingStartScale = f;
}
public void setOutgoingEndScale(float f) {
this.outgoingEndScale = f;
}
public void setOutgoingStartScale(float f) {
this.outgoingStartScale = f;
}
public void setScaleOnDisappear(boolean z) {
this.scaleOnDisappear = z;
}
public ScaleProvider() {
this(true);
}
public ScaleProvider(boolean z) {
this.outgoingStartScale = 1.0f;
this.outgoingEndScale = 1.1f;
this.incomingStartScale = 0.8f;
this.incomingEndScale = 1.0f;
this.scaleOnDisappear = true;
this.growing = z;
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
if (this.growing) {
return createScaleAnimator(view, this.incomingStartScale, this.incomingEndScale);
}
return createScaleAnimator(view, this.outgoingEndScale, this.outgoingStartScale);
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
if (!this.scaleOnDisappear) {
return null;
}
if (this.growing) {
return createScaleAnimator(view, this.outgoingStartScale, this.outgoingEndScale);
}
return createScaleAnimator(view, this.incomingEndScale, this.incomingStartScale);
}
private static Animator createScaleAnimator(final View view, float f, float f2) {
final float scaleX = view.getScaleX();
final float scaleY = view.getScaleY();
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.SCALE_X, scaleX * f, scaleX * f2), PropertyValuesHolder.ofFloat((Property<?, Float>) View.SCALE_Y, f * scaleY, f2 * scaleY));
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.platform.ScaleProvider.1
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setScaleX(scaleX);
view.setScaleY(scaleY);
}
});
return ofPropertyValuesHolder;
}
}

View File

@ -0,0 +1,137 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.content.Context;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.view.ViewCompat;
import com.google.android.material.R;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public final class SlideDistanceProvider implements VisibilityAnimatorProvider {
private static final int DEFAULT_DISTANCE = -1;
private int slideDistance = -1;
private int slideEdge;
@Retention(RetentionPolicy.SOURCE)
public @interface GravityFlag {
}
public int getSlideDistance() {
return this.slideDistance;
}
public int getSlideEdge() {
return this.slideEdge;
}
public void setSlideEdge(int i) {
this.slideEdge = i;
}
public SlideDistanceProvider(int i) {
this.slideEdge = i;
}
public void setSlideDistance(int i) {
if (i < 0) {
throw new IllegalArgumentException("Slide distance must be positive. If attempting to reverse the direction of the slide, use setSlideEdge(int) instead.");
}
this.slideDistance = i;
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createAppear(ViewGroup viewGroup, View view) {
return createTranslationAppearAnimator(viewGroup, view, this.slideEdge, getSlideDistanceOrDefault(view.getContext()));
}
@Override // com.google.android.material.transition.platform.VisibilityAnimatorProvider
public Animator createDisappear(ViewGroup viewGroup, View view) {
return createTranslationDisappearAnimator(viewGroup, view, this.slideEdge, getSlideDistanceOrDefault(view.getContext()));
}
private int getSlideDistanceOrDefault(Context context) {
int i = this.slideDistance;
return i != -1 ? i : context.getResources().getDimensionPixelSize(R.dimen.mtrl_transition_shared_axis_slide_distance);
}
private static Animator createTranslationAppearAnimator(View view, View view2, int i, int i2) {
float translationX = view2.getTranslationX();
float translationY = view2.getTranslationY();
if (i == 3) {
return createTranslationXAnimator(view2, i2 + translationX, translationX, translationX);
}
if (i == 5) {
return createTranslationXAnimator(view2, translationX - i2, translationX, translationX);
}
if (i == 48) {
return createTranslationYAnimator(view2, translationY - i2, translationY, translationY);
}
if (i == 80) {
return createTranslationYAnimator(view2, i2 + translationY, translationY, translationY);
}
if (i == 8388611) {
return createTranslationXAnimator(view2, isRtl(view) ? i2 + translationX : translationX - i2, translationX, translationX);
}
if (i == 8388613) {
return createTranslationXAnimator(view2, isRtl(view) ? translationX - i2 : i2 + translationX, translationX, translationX);
}
throw new IllegalArgumentException("Invalid slide direction: " + i);
}
private static Animator createTranslationDisappearAnimator(View view, View view2, int i, int i2) {
float translationX = view2.getTranslationX();
float translationY = view2.getTranslationY();
if (i == 3) {
return createTranslationXAnimator(view2, translationX, translationX - i2, translationX);
}
if (i == 5) {
return createTranslationXAnimator(view2, translationX, i2 + translationX, translationX);
}
if (i == 48) {
return createTranslationYAnimator(view2, translationY, i2 + translationY, translationY);
}
if (i == 80) {
return createTranslationYAnimator(view2, translationY, translationY - i2, translationY);
}
if (i == 8388611) {
return createTranslationXAnimator(view2, translationX, isRtl(view) ? translationX - i2 : i2 + translationX, translationX);
}
if (i == 8388613) {
return createTranslationXAnimator(view2, translationX, isRtl(view) ? i2 + translationX : translationX - i2, translationX);
}
throw new IllegalArgumentException("Invalid slide direction: " + i);
}
private static Animator createTranslationXAnimator(final View view, float f, float f2, final float f3) {
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_X, f, f2));
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.platform.SlideDistanceProvider.1
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setTranslationX(f3);
}
});
return ofPropertyValuesHolder;
}
private static Animator createTranslationYAnimator(final View view, float f, float f2, final float f3) {
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_Y, f, f2));
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.platform.SlideDistanceProvider.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
view.setTranslationY(f3);
}
});
return ofPropertyValuesHolder;
}
private static boolean isRtl(View view) {
return ViewCompat.getLayoutDirection(view) == 1;
}
}

View File

@ -0,0 +1,29 @@
package com.google.android.material.transition.platform;
import android.transition.Transition;
/* loaded from: classes.dex */
abstract class TransitionListenerAdapter implements Transition.TransitionListener {
@Override // android.transition.Transition.TransitionListener
public void onTransitionCancel(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionPause(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionResume(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
}
TransitionListenerAdapter() {
}
}

View File

@ -0,0 +1,211 @@
package com.google.android.material.transition.platform;
import android.animation.TimeInterpolator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.transition.PathMotion;
import android.transition.PatternPathMotion;
import android.transition.Transition;
import android.transition.TransitionSet;
import android.util.TypedValue;
import android.view.View;
import androidx.core.graphics.PathParser;
import com.google.android.material.canvas.CanvasCompat;
import com.google.android.material.motion.MotionUtils;
import com.google.android.material.shape.AbsoluteCornerSize;
import com.google.android.material.shape.CornerSize;
import com.google.android.material.shape.RelativeCornerSize;
import com.google.android.material.shape.ShapeAppearanceModel;
/* loaded from: classes.dex */
class TransitionUtils {
static final int NO_ATTR_RES_ID = 0;
static final int NO_DURATION = -1;
private static final int PATH_TYPE_ARC = 1;
private static final int PATH_TYPE_LINEAR = 0;
private static final RectF transformAlphaRectF = new RectF();
interface CornerSizeBinaryOperator {
CornerSize apply(CornerSize cornerSize, CornerSize cornerSize2);
}
static <T> T defaultIfNull(T t, T t2) {
return t != null ? t : t2;
}
static float lerp(float f, float f2, float f3) {
return f + (f3 * (f2 - f));
}
private TransitionUtils() {
}
static boolean maybeApplyThemeInterpolator(Transition transition, Context context, int i, TimeInterpolator timeInterpolator) {
if (i == 0 || transition.getInterpolator() != null) {
return false;
}
transition.setInterpolator(MotionUtils.resolveThemeInterpolator(context, i, timeInterpolator));
return true;
}
static boolean maybeApplyThemeDuration(Transition transition, Context context, int i) {
int resolveThemeDuration;
if (i == 0 || transition.getDuration() != -1 || (resolveThemeDuration = MotionUtils.resolveThemeDuration(context, i, -1)) == -1) {
return false;
}
transition.setDuration(resolveThemeDuration);
return true;
}
static boolean maybeApplyThemePath(Transition transition, Context context, int i) {
PathMotion resolveThemePath;
if (i == 0 || (resolveThemePath = resolveThemePath(context, i)) == null) {
return false;
}
transition.setPathMotion(resolveThemePath);
return true;
}
static PathMotion resolveThemePath(Context context, int i) {
TypedValue typedValue = new TypedValue();
if (!context.getTheme().resolveAttribute(i, typedValue, true)) {
return null;
}
if (typedValue.type == 16) {
int i2 = typedValue.data;
if (i2 == 0) {
return null;
}
if (i2 == 1) {
return new MaterialArcMotion();
}
throw new IllegalArgumentException("Invalid motion path type: " + i2);
}
if (typedValue.type == 3) {
return new PatternPathMotion(PathParser.createPathFromPathData(String.valueOf(typedValue.string)));
}
throw new IllegalArgumentException("Motion path theme attribute must either be an enum value or path data string");
}
static ShapeAppearanceModel convertToRelativeCornerSizes(ShapeAppearanceModel shapeAppearanceModel, final RectF rectF) {
return shapeAppearanceModel.withTransformedCornerSizes(new ShapeAppearanceModel.CornerSizeUnaryOperator() { // from class: com.google.android.material.transition.platform.TransitionUtils$$ExternalSyntheticLambda0
@Override // com.google.android.material.shape.ShapeAppearanceModel.CornerSizeUnaryOperator
public final CornerSize apply(CornerSize cornerSize) {
CornerSize createFromCornerSize;
createFromCornerSize = RelativeCornerSize.createFromCornerSize(rectF, cornerSize);
return createFromCornerSize;
}
});
}
static ShapeAppearanceModel transformCornerSizes(ShapeAppearanceModel shapeAppearanceModel, ShapeAppearanceModel shapeAppearanceModel2, RectF rectF, CornerSizeBinaryOperator cornerSizeBinaryOperator) {
return (isShapeAppearanceSignificant(shapeAppearanceModel, rectF) ? shapeAppearanceModel : shapeAppearanceModel2).toBuilder().setTopLeftCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getTopLeftCornerSize(), shapeAppearanceModel2.getTopLeftCornerSize())).setTopRightCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getTopRightCornerSize(), shapeAppearanceModel2.getTopRightCornerSize())).setBottomLeftCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getBottomLeftCornerSize(), shapeAppearanceModel2.getBottomLeftCornerSize())).setBottomRightCornerSize(cornerSizeBinaryOperator.apply(shapeAppearanceModel.getBottomRightCornerSize(), shapeAppearanceModel2.getBottomRightCornerSize())).build();
}
private static boolean isShapeAppearanceSignificant(ShapeAppearanceModel shapeAppearanceModel, RectF rectF) {
return (shapeAppearanceModel.getTopLeftCornerSize().getCornerSize(rectF) == 0.0f && shapeAppearanceModel.getTopRightCornerSize().getCornerSize(rectF) == 0.0f && shapeAppearanceModel.getBottomRightCornerSize().getCornerSize(rectF) == 0.0f && shapeAppearanceModel.getBottomLeftCornerSize().getCornerSize(rectF) == 0.0f) ? false : true;
}
static float lerp(float f, float f2, float f3, float f4, float f5) {
return lerp(f, f2, f3, f4, f5, false);
}
static float lerp(float f, float f2, float f3, float f4, float f5, boolean z) {
if (!z || (f5 >= 0.0f && f5 <= 1.0f)) {
return f5 < f3 ? f : f5 > f4 ? f2 : lerp(f, f2, (f5 - f3) / (f4 - f3));
}
return lerp(f, f2, f5);
}
static int lerp(int i, int i2, float f, float f2, float f3) {
return f3 < f ? i : f3 > f2 ? i2 : (int) lerp(i, i2, (f3 - f) / (f2 - f));
}
static ShapeAppearanceModel lerp(ShapeAppearanceModel shapeAppearanceModel, ShapeAppearanceModel shapeAppearanceModel2, final RectF rectF, final RectF rectF2, final float f, final float f2, final float f3) {
return f3 < f ? shapeAppearanceModel : f3 > f2 ? shapeAppearanceModel2 : transformCornerSizes(shapeAppearanceModel, shapeAppearanceModel2, rectF, new CornerSizeBinaryOperator() { // from class: com.google.android.material.transition.platform.TransitionUtils.1
@Override // com.google.android.material.transition.platform.TransitionUtils.CornerSizeBinaryOperator
public CornerSize apply(CornerSize cornerSize, CornerSize cornerSize2) {
return new AbsoluteCornerSize(TransitionUtils.lerp(cornerSize.getCornerSize(rectF), cornerSize2.getCornerSize(rectF2), f, f2, f3));
}
});
}
static Shader createColorShader(int i) {
return new LinearGradient(0.0f, 0.0f, 0.0f, 0.0f, i, i, Shader.TileMode.CLAMP);
}
static View findDescendantOrAncestorById(View view, int i) {
View findViewById = view.findViewById(i);
return findViewById != null ? findViewById : findAncestorById(view, i);
}
static View findAncestorById(View view, int i) {
String resourceName = view.getResources().getResourceName(i);
while (view != null) {
if (view.getId() != i) {
Object parent = view.getParent();
if (!(parent instanceof View)) {
break;
}
view = (View) parent;
} else {
return view;
}
}
throw new IllegalArgumentException(resourceName + " is not a valid ancestor");
}
static RectF getRelativeBounds(View view) {
return new RectF(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
static Rect getRelativeBoundsRect(View view) {
return new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
static RectF getLocationOnScreen(View view) {
int[] iArr = new int[2];
view.getLocationOnScreen(iArr);
return new RectF(iArr[0], iArr[1], view.getWidth() + r1, view.getHeight() + r0);
}
static float calculateArea(RectF rectF) {
return rectF.width() * rectF.height();
}
private static int saveLayerAlphaCompat(Canvas canvas, Rect rect, int i) {
RectF rectF = transformAlphaRectF;
rectF.set(rect);
return canvas.saveLayerAlpha(rectF, i);
}
static void transform(Canvas canvas, Rect rect, float f, float f2, float f3, int i, CanvasCompat.CanvasOperation canvasOperation) {
if (i <= 0) {
return;
}
int save = canvas.save();
canvas.translate(f, f2);
canvas.scale(f3, f3);
if (i < 255) {
saveLayerAlphaCompat(canvas, rect, i);
}
canvasOperation.run(canvas);
canvas.restoreToCount(save);
}
static void maybeAddTransition(TransitionSet transitionSet, Transition transition) {
if (transition != null) {
transitionSet.addTransition(transition);
}
}
static void maybeRemoveTransition(TransitionSet transitionSet, Transition transition) {
if (transition != null) {
transitionSet.removeTransition(transition);
}
}
}

View File

@ -0,0 +1,12 @@
package com.google.android.material.transition.platform;
import android.animation.Animator;
import android.view.View;
import android.view.ViewGroup;
/* loaded from: classes.dex */
public interface VisibilityAnimatorProvider {
Animator createAppear(ViewGroup viewGroup, View view);
Animator createDisappear(ViewGroup viewGroup, View view);
}