ADD week 5
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user