138 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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;
 | |
|     }
 | |
| }
 |