ADD week 5
This commit is contained in:
		| @@ -0,0 +1,380 @@ | ||||
| package com.google.android.material.search; | ||||
|  | ||||
| import android.animation.Animator; | ||||
| import android.animation.AnimatorListenerAdapter; | ||||
| import android.animation.AnimatorSet; | ||||
| import android.animation.ValueAnimator; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.TextView; | ||||
| import androidx.appcompat.widget.ActionMenuView; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import com.google.android.material.animation.AnimatableView; | ||||
| import com.google.android.material.animation.AnimationUtils; | ||||
| import com.google.android.material.appbar.AppBarLayout; | ||||
| import com.google.android.material.internal.ExpandCollapseAnimationHelper; | ||||
| import com.google.android.material.internal.MultiViewUpdateListener; | ||||
| import com.google.android.material.internal.ToolbarUtils; | ||||
| import com.google.android.material.internal.ViewUtils; | ||||
| import com.google.android.material.search.SearchBar; | ||||
| import com.google.android.material.shape.MaterialShapeDrawable; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Iterator; | ||||
| import java.util.LinkedHashSet; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| import java.util.Set; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class SearchBarAnimationHelper { | ||||
|     private static final long COLLAPSE_DURATION_MS = 250; | ||||
|     private static final long COLLAPSE_FADE_IN_CHILDREN_DURATION_MS = 100; | ||||
|     private static final long EXPAND_DURATION_MS = 300; | ||||
|     private static final long EXPAND_FADE_OUT_CHILDREN_DURATION_MS = 75; | ||||
|     private static final long ON_LOAD_ANIM_CENTER_VIEW_DEFAULT_FADE_DURATION_MS = 250; | ||||
|     private static final long ON_LOAD_ANIM_CENTER_VIEW_DEFAULT_FADE_IN_START_DELAY_MS = 500; | ||||
|     private static final long ON_LOAD_ANIM_CENTER_VIEW_DEFAULT_FADE_OUT_START_DELAY_MS = 750; | ||||
|     private static final long ON_LOAD_ANIM_SECONDARY_DURATION_MS = 250; | ||||
|     private static final long ON_LOAD_ANIM_SECONDARY_START_DELAY_MS = 250; | ||||
|     private boolean collapsing; | ||||
|     private Animator defaultCenterViewAnimator; | ||||
|     private boolean expanding; | ||||
|     private Animator secondaryViewAnimator; | ||||
|     private final Set<SearchBar.OnLoadAnimationCallback> onLoadAnimationCallbacks = new LinkedHashSet(); | ||||
|     private final Set<AnimatorListenerAdapter> expandAnimationListeners = new LinkedHashSet(); | ||||
|     private final Set<AnimatorListenerAdapter> collapseAnimationListeners = new LinkedHashSet(); | ||||
|     private boolean onLoadAnimationFadeInEnabled = true; | ||||
|     private Animator runningExpandOrCollapseAnimator = null; | ||||
|  | ||||
|     /* JADX INFO: Access modifiers changed from: private */ | ||||
|     interface OnLoadAnimationInvocation { | ||||
|         void invoke(SearchBar.OnLoadAnimationCallback onLoadAnimationCallback); | ||||
|     } | ||||
|  | ||||
|     boolean isCollapsing() { | ||||
|         return this.collapsing; | ||||
|     } | ||||
|  | ||||
|     boolean isExpanding() { | ||||
|         return this.expanding; | ||||
|     } | ||||
|  | ||||
|     boolean isOnLoadAnimationFadeInEnabled() { | ||||
|         return this.onLoadAnimationFadeInEnabled; | ||||
|     } | ||||
|  | ||||
|     void setOnLoadAnimationFadeInEnabled(boolean z) { | ||||
|         this.onLoadAnimationFadeInEnabled = z; | ||||
|     } | ||||
|  | ||||
|     SearchBarAnimationHelper() { | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Multi-variable type inference failed */ | ||||
|     void startOnLoadAnimation(SearchBar searchBar) { | ||||
|         dispatchOnLoadAnimation(new OnLoadAnimationInvocation() { // from class: com.google.android.material.search.SearchBarAnimationHelper$$ExternalSyntheticLambda3 | ||||
|             @Override // com.google.android.material.search.SearchBarAnimationHelper.OnLoadAnimationInvocation | ||||
|             public final void invoke(SearchBar.OnLoadAnimationCallback onLoadAnimationCallback) { | ||||
|                 onLoadAnimationCallback.onAnimationStart(); | ||||
|             } | ||||
|         }); | ||||
|         TextView textView = searchBar.getTextView(); | ||||
|         final View centerView = searchBar.getCenterView(); | ||||
|         View secondaryActionMenuItemView = ToolbarUtils.getSecondaryActionMenuItemView(searchBar); | ||||
|         final Animator secondaryViewAnimator = getSecondaryViewAnimator(textView, secondaryActionMenuItemView); | ||||
|         secondaryViewAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.search.SearchBarAnimationHelper.1 | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationEnd(Animator animator) { | ||||
|                 SearchBarAnimationHelper.this.dispatchOnLoadAnimation(new OnLoadAnimationInvocation() { // from class: com.google.android.material.search.SearchBarAnimationHelper$1$$ExternalSyntheticLambda0 | ||||
|                     @Override // com.google.android.material.search.SearchBarAnimationHelper.OnLoadAnimationInvocation | ||||
|                     public final void invoke(SearchBar.OnLoadAnimationCallback onLoadAnimationCallback) { | ||||
|                         onLoadAnimationCallback.onAnimationEnd(); | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
|         }); | ||||
|         this.secondaryViewAnimator = secondaryViewAnimator; | ||||
|         textView.setAlpha(0.0f); | ||||
|         if (secondaryActionMenuItemView != null) { | ||||
|             secondaryActionMenuItemView.setAlpha(0.0f); | ||||
|         } | ||||
|         if (centerView instanceof AnimatableView) { | ||||
|             Objects.requireNonNull(secondaryViewAnimator); | ||||
|             ((AnimatableView) centerView).startAnimation(new AnimatableView.Listener() { // from class: com.google.android.material.search.SearchBarAnimationHelper$$ExternalSyntheticLambda4 | ||||
|                 @Override // com.google.android.material.animation.AnimatableView.Listener | ||||
|                 public final void onAnimationEnd() { | ||||
|                     secondaryViewAnimator.start(); | ||||
|                 } | ||||
|             }); | ||||
|         } else { | ||||
|             if (centerView != 0) { | ||||
|                 centerView.setAlpha(0.0f); | ||||
|                 centerView.setVisibility(0); | ||||
|                 Animator defaultCenterViewAnimator = getDefaultCenterViewAnimator(centerView); | ||||
|                 this.defaultCenterViewAnimator = defaultCenterViewAnimator; | ||||
|                 defaultCenterViewAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.search.SearchBarAnimationHelper.2 | ||||
|                     @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|                     public void onAnimationEnd(Animator animator) { | ||||
|                         centerView.setVisibility(8); | ||||
|                         secondaryViewAnimator.start(); | ||||
|                     } | ||||
|                 }); | ||||
|                 defaultCenterViewAnimator.start(); | ||||
|                 return; | ||||
|             } | ||||
|             secondaryViewAnimator.start(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Multi-variable type inference failed */ | ||||
|     void stopOnLoadAnimation(SearchBar searchBar) { | ||||
|         Animator animator = this.secondaryViewAnimator; | ||||
|         if (animator != null) { | ||||
|             animator.end(); | ||||
|         } | ||||
|         Animator animator2 = this.defaultCenterViewAnimator; | ||||
|         if (animator2 != null) { | ||||
|             animator2.end(); | ||||
|         } | ||||
|         View centerView = searchBar.getCenterView(); | ||||
|         if (centerView instanceof AnimatableView) { | ||||
|             ((AnimatableView) centerView).stopAnimation(); | ||||
|         } | ||||
|         if (centerView != 0) { | ||||
|             centerView.setAlpha(0.0f); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void addOnLoadAnimationCallback(SearchBar.OnLoadAnimationCallback onLoadAnimationCallback) { | ||||
|         this.onLoadAnimationCallbacks.add(onLoadAnimationCallback); | ||||
|     } | ||||
|  | ||||
|     boolean removeOnLoadAnimationCallback(SearchBar.OnLoadAnimationCallback onLoadAnimationCallback) { | ||||
|         return this.onLoadAnimationCallbacks.remove(onLoadAnimationCallback); | ||||
|     } | ||||
|  | ||||
|     /* JADX INFO: Access modifiers changed from: private */ | ||||
|     public void dispatchOnLoadAnimation(OnLoadAnimationInvocation onLoadAnimationInvocation) { | ||||
|         Iterator<SearchBar.OnLoadAnimationCallback> it = this.onLoadAnimationCallbacks.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             onLoadAnimationInvocation.invoke(it.next()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private Animator getDefaultCenterViewAnimator(View view) { | ||||
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f); | ||||
|         ofFloat.addUpdateListener(MultiViewUpdateListener.alphaListener(view)); | ||||
|         ofFloat.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); | ||||
|         ofFloat.setDuration(this.onLoadAnimationFadeInEnabled ? 250L : 0L); | ||||
|         ofFloat.setStartDelay(this.onLoadAnimationFadeInEnabled ? ON_LOAD_ANIM_CENTER_VIEW_DEFAULT_FADE_IN_START_DELAY_MS : 0L); | ||||
|         ValueAnimator ofFloat2 = ValueAnimator.ofFloat(1.0f, 0.0f); | ||||
|         ofFloat2.addUpdateListener(MultiViewUpdateListener.alphaListener(view)); | ||||
|         ofFloat2.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); | ||||
|         ofFloat2.setDuration(250L); | ||||
|         ofFloat2.setStartDelay(ON_LOAD_ANIM_CENTER_VIEW_DEFAULT_FADE_OUT_START_DELAY_MS); | ||||
|         AnimatorSet animatorSet = new AnimatorSet(); | ||||
|         animatorSet.playSequentially(ofFloat, ofFloat2); | ||||
|         return animatorSet; | ||||
|     } | ||||
|  | ||||
|     private Animator getSecondaryViewAnimator(TextView textView, View view) { | ||||
|         AnimatorSet animatorSet = new AnimatorSet(); | ||||
|         animatorSet.setStartDelay(250L); | ||||
|         animatorSet.play(getTextViewAnimator(textView)); | ||||
|         if (view != null) { | ||||
|             animatorSet.play(getSecondaryActionMenuItemAnimator(view)); | ||||
|         } | ||||
|         return animatorSet; | ||||
|     } | ||||
|  | ||||
|     private Animator getTextViewAnimator(TextView textView) { | ||||
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f); | ||||
|         ofFloat.addUpdateListener(MultiViewUpdateListener.alphaListener(textView)); | ||||
|         ofFloat.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); | ||||
|         ofFloat.setDuration(250L); | ||||
|         return ofFloat; | ||||
|     } | ||||
|  | ||||
|     private Animator getSecondaryActionMenuItemAnimator(View view) { | ||||
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f); | ||||
|         ofFloat.addUpdateListener(MultiViewUpdateListener.alphaListener(view)); | ||||
|         ofFloat.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); | ||||
|         ofFloat.setDuration(250L); | ||||
|         return ofFloat; | ||||
|     } | ||||
|  | ||||
|     void startExpandAnimation(final SearchBar searchBar, final View view, final AppBarLayout appBarLayout, final boolean z) { | ||||
|         Animator animator; | ||||
|         if (isCollapsing() && (animator = this.runningExpandOrCollapseAnimator) != null) { | ||||
|             animator.cancel(); | ||||
|         } | ||||
|         this.expanding = true; | ||||
|         view.setVisibility(4); | ||||
|         view.post(new Runnable() { // from class: com.google.android.material.search.SearchBarAnimationHelper$$ExternalSyntheticLambda0 | ||||
|             @Override // java.lang.Runnable | ||||
|             public final void run() { | ||||
|                 SearchBarAnimationHelper.this.m248x1b96b119(searchBar, view, appBarLayout, z); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /* renamed from: lambda$startExpandAnimation$0$com-google-android-material-search-SearchBarAnimationHelper, reason: not valid java name */ | ||||
|     /* synthetic */ void m248x1b96b119(SearchBar searchBar, View view, AppBarLayout appBarLayout, boolean z) { | ||||
|         AnimatorSet animatorSet = new AnimatorSet(); | ||||
|         animatorSet.playSequentially(getFadeOutChildrenAnimator(searchBar, view), getExpandAnimator(searchBar, view, appBarLayout)); | ||||
|         animatorSet.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.search.SearchBarAnimationHelper.3 | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationEnd(Animator animator) { | ||||
|                 SearchBarAnimationHelper.this.runningExpandOrCollapseAnimator = null; | ||||
|             } | ||||
|         }); | ||||
|         Iterator<AnimatorListenerAdapter> it = this.expandAnimationListeners.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             animatorSet.addListener(it.next()); | ||||
|         } | ||||
|         if (z) { | ||||
|             animatorSet.setDuration(0L); | ||||
|         } | ||||
|         animatorSet.start(); | ||||
|         this.runningExpandOrCollapseAnimator = animatorSet; | ||||
|     } | ||||
|  | ||||
|     private Animator getExpandAnimator(final SearchBar searchBar, View view, AppBarLayout appBarLayout) { | ||||
|         return getExpandCollapseAnimationHelper(searchBar, view, appBarLayout).setDuration(EXPAND_DURATION_MS).addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.search.SearchBarAnimationHelper.4 | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationStart(Animator animator) { | ||||
|                 searchBar.setVisibility(4); | ||||
|             } | ||||
|  | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationEnd(Animator animator) { | ||||
|                 SearchBarAnimationHelper.this.expanding = false; | ||||
|             } | ||||
|         }).getExpandAnimator(); | ||||
|     } | ||||
|  | ||||
|     void addExpandAnimationListener(AnimatorListenerAdapter animatorListenerAdapter) { | ||||
|         this.expandAnimationListeners.add(animatorListenerAdapter); | ||||
|     } | ||||
|  | ||||
|     boolean removeExpandAnimationListener(AnimatorListenerAdapter animatorListenerAdapter) { | ||||
|         return this.expandAnimationListeners.remove(animatorListenerAdapter); | ||||
|     } | ||||
|  | ||||
|     void startCollapseAnimation(SearchBar searchBar, View view, AppBarLayout appBarLayout, boolean z) { | ||||
|         Animator animator; | ||||
|         if (isExpanding() && (animator = this.runningExpandOrCollapseAnimator) != null) { | ||||
|             animator.cancel(); | ||||
|         } | ||||
|         this.collapsing = true; | ||||
|         AnimatorSet animatorSet = new AnimatorSet(); | ||||
|         animatorSet.playSequentially(getCollapseAnimator(searchBar, view, appBarLayout), getFadeInChildrenAnimator(searchBar)); | ||||
|         animatorSet.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.search.SearchBarAnimationHelper.5 | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationEnd(Animator animator2) { | ||||
|                 SearchBarAnimationHelper.this.runningExpandOrCollapseAnimator = null; | ||||
|             } | ||||
|         }); | ||||
|         Iterator<AnimatorListenerAdapter> it = this.collapseAnimationListeners.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             animatorSet.addListener(it.next()); | ||||
|         } | ||||
|         if (z) { | ||||
|             animatorSet.setDuration(0L); | ||||
|         } | ||||
|         animatorSet.start(); | ||||
|         this.runningExpandOrCollapseAnimator = animatorSet; | ||||
|     } | ||||
|  | ||||
|     private Animator getCollapseAnimator(final SearchBar searchBar, View view, AppBarLayout appBarLayout) { | ||||
|         return getExpandCollapseAnimationHelper(searchBar, view, appBarLayout).setDuration(250L).addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.search.SearchBarAnimationHelper.6 | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationStart(Animator animator) { | ||||
|                 searchBar.stopOnLoadAnimation(); | ||||
|             } | ||||
|  | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationEnd(Animator animator) { | ||||
|                 searchBar.setVisibility(0); | ||||
|                 SearchBarAnimationHelper.this.collapsing = false; | ||||
|             } | ||||
|         }).getCollapseAnimator(); | ||||
|     } | ||||
|  | ||||
|     void addCollapseAnimationListener(AnimatorListenerAdapter animatorListenerAdapter) { | ||||
|         this.collapseAnimationListeners.add(animatorListenerAdapter); | ||||
|     } | ||||
|  | ||||
|     boolean removeCollapseAnimationListener(AnimatorListenerAdapter animatorListenerAdapter) { | ||||
|         return this.collapseAnimationListeners.remove(animatorListenerAdapter); | ||||
|     } | ||||
|  | ||||
|     private ExpandCollapseAnimationHelper getExpandCollapseAnimationHelper(SearchBar searchBar, View view, AppBarLayout appBarLayout) { | ||||
|         return new ExpandCollapseAnimationHelper(searchBar, view).setAdditionalUpdateListener(getExpandedViewBackgroundUpdateListener(searchBar, view)).setCollapsedViewOffsetY(appBarLayout != null ? appBarLayout.getTop() : 0).addEndAnchoredViews(getEndAnchoredViews(view)); | ||||
|     } | ||||
|  | ||||
|     private ValueAnimator.AnimatorUpdateListener getExpandedViewBackgroundUpdateListener(SearchBar searchBar, final View view) { | ||||
|         final MaterialShapeDrawable createWithElevationOverlay = MaterialShapeDrawable.createWithElevationOverlay(view.getContext()); | ||||
|         createWithElevationOverlay.setCornerSize(searchBar.getCornerSize()); | ||||
|         createWithElevationOverlay.setElevation(ViewCompat.getElevation(searchBar)); | ||||
|         return new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.search.SearchBarAnimationHelper$$ExternalSyntheticLambda1 | ||||
|             @Override // android.animation.ValueAnimator.AnimatorUpdateListener | ||||
|             public final void onAnimationUpdate(ValueAnimator valueAnimator) { | ||||
|                 SearchBarAnimationHelper.lambda$getExpandedViewBackgroundUpdateListener$1(MaterialShapeDrawable.this, view, valueAnimator); | ||||
|             } | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     static /* synthetic */ void lambda$getExpandedViewBackgroundUpdateListener$1(MaterialShapeDrawable materialShapeDrawable, View view, ValueAnimator valueAnimator) { | ||||
|         materialShapeDrawable.setInterpolation(1.0f - valueAnimator.getAnimatedFraction()); | ||||
|         ViewCompat.setBackground(view, materialShapeDrawable); | ||||
|         view.setAlpha(1.0f); | ||||
|     } | ||||
|  | ||||
|     private Animator getFadeOutChildrenAnimator(SearchBar searchBar, final View view) { | ||||
|         List<View> fadeChildren = getFadeChildren(searchBar); | ||||
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(1.0f, 0.0f); | ||||
|         ofFloat.addUpdateListener(MultiViewUpdateListener.alphaListener(fadeChildren)); | ||||
|         ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.search.SearchBarAnimationHelper$$ExternalSyntheticLambda2 | ||||
|             @Override // android.animation.ValueAnimator.AnimatorUpdateListener | ||||
|             public final void onAnimationUpdate(ValueAnimator valueAnimator) { | ||||
|                 view.setAlpha(0.0f); | ||||
|             } | ||||
|         }); | ||||
|         ofFloat.setDuration(75L); | ||||
|         ofFloat.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); | ||||
|         return ofFloat; | ||||
|     } | ||||
|  | ||||
|     private Animator getFadeInChildrenAnimator(SearchBar searchBar) { | ||||
|         List<View> fadeChildren = getFadeChildren(searchBar); | ||||
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f); | ||||
|         ofFloat.addUpdateListener(MultiViewUpdateListener.alphaListener(fadeChildren)); | ||||
|         ofFloat.setDuration(COLLAPSE_FADE_IN_CHILDREN_DURATION_MS); | ||||
|         ofFloat.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); | ||||
|         return ofFloat; | ||||
|     } | ||||
|  | ||||
|     private List<View> getFadeChildren(SearchBar searchBar) { | ||||
|         List<View> children = ViewUtils.getChildren(searchBar); | ||||
|         if (searchBar.getCenterView() != null) { | ||||
|             children.remove(searchBar.getCenterView()); | ||||
|         } | ||||
|         return children; | ||||
|     } | ||||
|  | ||||
|     private List<View> getEndAnchoredViews(View view) { | ||||
|         boolean isLayoutRtl = ViewUtils.isLayoutRtl(view); | ||||
|         ArrayList arrayList = new ArrayList(); | ||||
|         if (view instanceof ViewGroup) { | ||||
|             ViewGroup viewGroup = (ViewGroup) view; | ||||
|             for (int i = 0; i < viewGroup.getChildCount(); i++) { | ||||
|                 View childAt = viewGroup.getChildAt(i); | ||||
|                 if ((!isLayoutRtl && (childAt instanceof ActionMenuView)) || (isLayoutRtl && !(childAt instanceof ActionMenuView))) { | ||||
|                     arrayList.add(childAt); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return arrayList; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user