185 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.transition;
 | |
| 
 | |
| import android.animation.Animator;
 | |
| import android.animation.TimeInterpolator;
 | |
| import android.content.Context;
 | |
| import android.content.res.TypedArray;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.view.animation.AccelerateInterpolator;
 | |
| import android.view.animation.DecelerateInterpolator;
 | |
| import androidx.core.content.res.TypedArrayUtils;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import java.lang.annotation.Retention;
 | |
| import java.lang.annotation.RetentionPolicy;
 | |
| import org.xmlpull.v1.XmlPullParser;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class Slide extends Visibility {
 | |
|     private static final String PROPNAME_SCREEN_POSITION = "android:slide:screenPosition";
 | |
|     private CalculateSlide mSlideCalculator;
 | |
|     private int mSlideEdge;
 | |
|     private static final TimeInterpolator sDecelerate = new DecelerateInterpolator();
 | |
|     private static final TimeInterpolator sAccelerate = new AccelerateInterpolator();
 | |
|     private static final CalculateSlide sCalculateLeft = new CalculateSlideHorizontal() { // from class: androidx.transition.Slide.1
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneX(ViewGroup viewGroup, View view) {
 | |
|             return view.getTranslationX() - viewGroup.getWidth();
 | |
|         }
 | |
|     };
 | |
|     private static final CalculateSlide sCalculateStart = new CalculateSlideHorizontal() { // from class: androidx.transition.Slide.2
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneX(ViewGroup viewGroup, View view) {
 | |
|             if (ViewCompat.getLayoutDirection(viewGroup) == 1) {
 | |
|                 return view.getTranslationX() + viewGroup.getWidth();
 | |
|             }
 | |
|             return view.getTranslationX() - viewGroup.getWidth();
 | |
|         }
 | |
|     };
 | |
|     private static final CalculateSlide sCalculateTop = new CalculateSlideVertical() { // from class: androidx.transition.Slide.3
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneY(ViewGroup viewGroup, View view) {
 | |
|             return view.getTranslationY() - viewGroup.getHeight();
 | |
|         }
 | |
|     };
 | |
|     private static final CalculateSlide sCalculateRight = new CalculateSlideHorizontal() { // from class: androidx.transition.Slide.4
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneX(ViewGroup viewGroup, View view) {
 | |
|             return view.getTranslationX() + viewGroup.getWidth();
 | |
|         }
 | |
|     };
 | |
|     private static final CalculateSlide sCalculateEnd = new CalculateSlideHorizontal() { // from class: androidx.transition.Slide.5
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneX(ViewGroup viewGroup, View view) {
 | |
|             if (ViewCompat.getLayoutDirection(viewGroup) == 1) {
 | |
|                 return view.getTranslationX() - viewGroup.getWidth();
 | |
|             }
 | |
|             return view.getTranslationX() + viewGroup.getWidth();
 | |
|         }
 | |
|     };
 | |
|     private static final CalculateSlide sCalculateBottom = new CalculateSlideVertical() { // from class: androidx.transition.Slide.6
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneY(ViewGroup viewGroup, View view) {
 | |
|             return view.getTranslationY() + viewGroup.getHeight();
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     private interface CalculateSlide {
 | |
|         float getGoneX(ViewGroup viewGroup, View view);
 | |
| 
 | |
|         float getGoneY(ViewGroup viewGroup, View view);
 | |
|     }
 | |
| 
 | |
|     @Retention(RetentionPolicy.SOURCE)
 | |
|     public @interface GravityFlag {
 | |
|     }
 | |
| 
 | |
|     public int getSlideEdge() {
 | |
|         return this.mSlideEdge;
 | |
|     }
 | |
| 
 | |
|     private static abstract class CalculateSlideHorizontal implements CalculateSlide {
 | |
|         private CalculateSlideHorizontal() {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneY(ViewGroup viewGroup, View view) {
 | |
|             return view.getTranslationY();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static abstract class CalculateSlideVertical implements CalculateSlide {
 | |
|         private CalculateSlideVertical() {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.transition.Slide.CalculateSlide
 | |
|         public float getGoneX(ViewGroup viewGroup, View view) {
 | |
|             return view.getTranslationX();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public Slide() {
 | |
|         this.mSlideCalculator = sCalculateBottom;
 | |
|         this.mSlideEdge = 80;
 | |
|         setSlideEdge(80);
 | |
|     }
 | |
| 
 | |
|     public Slide(int i) {
 | |
|         this.mSlideCalculator = sCalculateBottom;
 | |
|         this.mSlideEdge = 80;
 | |
|         setSlideEdge(i);
 | |
|     }
 | |
| 
 | |
|     public Slide(Context context, AttributeSet attributeSet) {
 | |
|         super(context, attributeSet);
 | |
|         this.mSlideCalculator = sCalculateBottom;
 | |
|         this.mSlideEdge = 80;
 | |
|         TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, Styleable.SLIDE);
 | |
|         int namedInt = TypedArrayUtils.getNamedInt(obtainStyledAttributes, (XmlPullParser) attributeSet, "slideEdge", 0, 80);
 | |
|         obtainStyledAttributes.recycle();
 | |
|         setSlideEdge(namedInt);
 | |
|     }
 | |
| 
 | |
|     private void captureValues(TransitionValues transitionValues) {
 | |
|         int[] iArr = new int[2];
 | |
|         transitionValues.view.getLocationOnScreen(iArr);
 | |
|         transitionValues.values.put(PROPNAME_SCREEN_POSITION, iArr);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.transition.Visibility, androidx.transition.Transition
 | |
|     public void captureStartValues(TransitionValues transitionValues) {
 | |
|         super.captureStartValues(transitionValues);
 | |
|         captureValues(transitionValues);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.transition.Visibility, androidx.transition.Transition
 | |
|     public void captureEndValues(TransitionValues transitionValues) {
 | |
|         super.captureEndValues(transitionValues);
 | |
|         captureValues(transitionValues);
 | |
|     }
 | |
| 
 | |
|     public void setSlideEdge(int i) {
 | |
|         if (i == 3) {
 | |
|             this.mSlideCalculator = sCalculateLeft;
 | |
|         } else if (i == 5) {
 | |
|             this.mSlideCalculator = sCalculateRight;
 | |
|         } else if (i == 48) {
 | |
|             this.mSlideCalculator = sCalculateTop;
 | |
|         } else if (i == 80) {
 | |
|             this.mSlideCalculator = sCalculateBottom;
 | |
|         } else if (i == 8388611) {
 | |
|             this.mSlideCalculator = sCalculateStart;
 | |
|         } else {
 | |
|             if (i != 8388613) {
 | |
|                 throw new IllegalArgumentException("Invalid slide direction");
 | |
|             }
 | |
|             this.mSlideCalculator = sCalculateEnd;
 | |
|         }
 | |
|         this.mSlideEdge = i;
 | |
|         SidePropagation sidePropagation = new SidePropagation();
 | |
|         sidePropagation.setSide(i);
 | |
|         setPropagation(sidePropagation);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.transition.Visibility
 | |
|     public Animator onAppear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
 | |
|         if (transitionValues2 == null) {
 | |
|             return null;
 | |
|         }
 | |
|         int[] iArr = (int[]) transitionValues2.values.get(PROPNAME_SCREEN_POSITION);
 | |
|         float translationX = view.getTranslationX();
 | |
|         float translationY = view.getTranslationY();
 | |
|         return TranslationAnimationCreator.createAnimation(view, transitionValues2, iArr[0], iArr[1], this.mSlideCalculator.getGoneX(viewGroup, view), this.mSlideCalculator.getGoneY(viewGroup, view), translationX, translationY, sDecelerate, this);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.transition.Visibility
 | |
|     public Animator onDisappear(ViewGroup viewGroup, View view, TransitionValues transitionValues, TransitionValues transitionValues2) {
 | |
|         if (transitionValues == null) {
 | |
|             return null;
 | |
|         }
 | |
|         int[] iArr = (int[]) transitionValues.values.get(PROPNAME_SCREEN_POSITION);
 | |
|         return TranslationAnimationCreator.createAnimation(view, transitionValues, iArr[0], iArr[1], view.getTranslationX(), view.getTranslationY(), this.mSlideCalculator.getGoneX(viewGroup, view), this.mSlideCalculator.getGoneY(viewGroup, view), sAccelerate, this);
 | |
|     }
 | |
| }
 |