118 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.transition;
 | |
| 
 | |
| import android.animation.Animator;
 | |
| import android.animation.AnimatorListenerAdapter;
 | |
| import android.animation.ObjectAnimator;
 | |
| import android.animation.PropertyValuesHolder;
 | |
| import android.animation.TimeInterpolator;
 | |
| import android.util.Property;
 | |
| import android.view.View;
 | |
| import androidx.transition.Transition;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class TranslationAnimationCreator {
 | |
|     static Animator createAnimation(View view, TransitionValues transitionValues, int i, int i2, float f, float f2, float f3, float f4, TimeInterpolator timeInterpolator, Transition transition) {
 | |
|         float f5;
 | |
|         float f6;
 | |
|         float translationX = view.getTranslationX();
 | |
|         float translationY = view.getTranslationY();
 | |
|         if (((int[]) transitionValues.view.getTag(R.id.transition_position)) != null) {
 | |
|             f5 = (r4[0] - i) + translationX;
 | |
|             f6 = (r4[1] - i2) + translationY;
 | |
|         } else {
 | |
|             f5 = f;
 | |
|             f6 = f2;
 | |
|         }
 | |
|         int round = i + Math.round(f5 - translationX);
 | |
|         int round2 = i2 + Math.round(f6 - translationY);
 | |
|         view.setTranslationX(f5);
 | |
|         view.setTranslationY(f6);
 | |
|         if (f5 == f3 && f6 == f4) {
 | |
|             return null;
 | |
|         }
 | |
|         ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_X, f5, f3), PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_Y, f6, f4));
 | |
|         TransitionPositionListener transitionPositionListener = new TransitionPositionListener(view, transitionValues.view, round, round2, translationX, translationY);
 | |
|         transition.addListener(transitionPositionListener);
 | |
|         ofPropertyValuesHolder.addListener(transitionPositionListener);
 | |
|         AnimatorUtils.addPauseListener(ofPropertyValuesHolder, transitionPositionListener);
 | |
|         ofPropertyValuesHolder.setInterpolator(timeInterpolator);
 | |
|         return ofPropertyValuesHolder;
 | |
|     }
 | |
| 
 | |
|     private static class TransitionPositionListener extends AnimatorListenerAdapter implements Transition.TransitionListener {
 | |
|         private final View mMovingView;
 | |
|         private float mPausedX;
 | |
|         private float mPausedY;
 | |
|         private final int mStartX;
 | |
|         private final int mStartY;
 | |
|         private final float mTerminalX;
 | |
|         private final float mTerminalY;
 | |
|         private int[] mTransitionPosition;
 | |
|         private final View mViewInHierarchy;
 | |
| 
 | |
|         @Override // androidx.transition.Transition.TransitionListener
 | |
|         public void onTransitionCancel(Transition transition) {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.transition.Transition.TransitionListener
 | |
|         public void onTransitionPause(Transition transition) {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.transition.Transition.TransitionListener
 | |
|         public void onTransitionResume(Transition transition) {
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.transition.Transition.TransitionListener
 | |
|         public void onTransitionStart(Transition transition) {
 | |
|         }
 | |
| 
 | |
|         TransitionPositionListener(View view, View view2, int i, int i2, float f, float f2) {
 | |
|             this.mMovingView = view;
 | |
|             this.mViewInHierarchy = view2;
 | |
|             this.mStartX = i - Math.round(view.getTranslationX());
 | |
|             this.mStartY = i2 - Math.round(view.getTranslationY());
 | |
|             this.mTerminalX = f;
 | |
|             this.mTerminalY = f2;
 | |
|             int[] iArr = (int[]) view2.getTag(R.id.transition_position);
 | |
|             this.mTransitionPosition = iArr;
 | |
|             if (iArr != null) {
 | |
|                 view2.setTag(R.id.transition_position, null);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|         public void onAnimationCancel(Animator animator) {
 | |
|             if (this.mTransitionPosition == null) {
 | |
|                 this.mTransitionPosition = new int[2];
 | |
|             }
 | |
|             this.mTransitionPosition[0] = Math.round(this.mStartX + this.mMovingView.getTranslationX());
 | |
|             this.mTransitionPosition[1] = Math.round(this.mStartY + this.mMovingView.getTranslationY());
 | |
|             this.mViewInHierarchy.setTag(R.id.transition_position, this.mTransitionPosition);
 | |
|         }
 | |
| 
 | |
|         @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorPauseListener
 | |
|         public void onAnimationPause(Animator animator) {
 | |
|             this.mPausedX = this.mMovingView.getTranslationX();
 | |
|             this.mPausedY = this.mMovingView.getTranslationY();
 | |
|             this.mMovingView.setTranslationX(this.mTerminalX);
 | |
|             this.mMovingView.setTranslationY(this.mTerminalY);
 | |
|         }
 | |
| 
 | |
|         @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorPauseListener
 | |
|         public void onAnimationResume(Animator animator) {
 | |
|             this.mMovingView.setTranslationX(this.mPausedX);
 | |
|             this.mMovingView.setTranslationY(this.mPausedY);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.transition.Transition.TransitionListener
 | |
|         public void onTransitionEnd(Transition transition) {
 | |
|             this.mMovingView.setTranslationX(this.mTerminalX);
 | |
|             this.mMovingView.setTranslationY(this.mTerminalY);
 | |
|             transition.removeListener(this);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private TranslationAnimationCreator() {
 | |
|     }
 | |
| }
 |