ADD week 5
This commit is contained in:
		
							
								
								
									
										184
									
								
								02-Easy5/E5/sources/androidx/transition/Slide.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										184
									
								
								02-Easy5/E5/sources/androidx/transition/Slide.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,184 @@ | ||||
| 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); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user