ADD week 5
This commit is contained in:
		| @@ -0,0 +1,172 @@ | ||||
| package androidx.transition; | ||||
|  | ||||
| import android.animation.Animator; | ||||
| import android.animation.ObjectAnimator; | ||||
| import android.animation.TypeEvaluator; | ||||
| import android.content.Context; | ||||
| import android.graphics.Matrix; | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.util.AttributeSet; | ||||
| import android.util.Property; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.ImageView; | ||||
| import androidx.transition.TransitionUtils; | ||||
| import java.util.Map; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ChangeImageTransform extends Transition { | ||||
|     private static final String PROPNAME_MATRIX = "android:changeImageTransform:matrix"; | ||||
|     private static final String PROPNAME_BOUNDS = "android:changeImageTransform:bounds"; | ||||
|     private static final String[] sTransitionProperties = {PROPNAME_MATRIX, PROPNAME_BOUNDS}; | ||||
|     private static final TypeEvaluator<Matrix> NULL_MATRIX_EVALUATOR = new TypeEvaluator<Matrix>() { // from class: androidx.transition.ChangeImageTransform.1 | ||||
|         @Override // android.animation.TypeEvaluator | ||||
|         public Matrix evaluate(float f, Matrix matrix, Matrix matrix2) { | ||||
|             return null; | ||||
|         } | ||||
|     }; | ||||
|     private static final Property<ImageView, Matrix> ANIMATED_TRANSFORM_PROPERTY = new Property<ImageView, Matrix>(Matrix.class, "animatedTransform") { // from class: androidx.transition.ChangeImageTransform.2 | ||||
|         @Override // android.util.Property | ||||
|         public Matrix get(ImageView imageView) { | ||||
|             return null; | ||||
|         } | ||||
|  | ||||
|         @Override // android.util.Property | ||||
|         public void set(ImageView imageView, Matrix matrix) { | ||||
|             ImageViewUtils.animateTransform(imageView, matrix); | ||||
|         } | ||||
|     }; | ||||
|  | ||||
|     @Override // androidx.transition.Transition | ||||
|     public String[] getTransitionProperties() { | ||||
|         return sTransitionProperties; | ||||
|     } | ||||
|  | ||||
|     public ChangeImageTransform() { | ||||
|     } | ||||
|  | ||||
|     public ChangeImageTransform(Context context, AttributeSet attributeSet) { | ||||
|         super(context, attributeSet); | ||||
|     } | ||||
|  | ||||
|     private void captureValues(TransitionValues transitionValues) { | ||||
|         View view = transitionValues.view; | ||||
|         if ((view instanceof ImageView) && view.getVisibility() == 0) { | ||||
|             ImageView imageView = (ImageView) view; | ||||
|             if (imageView.getDrawable() == null) { | ||||
|                 return; | ||||
|             } | ||||
|             Map<String, Object> map = transitionValues.values; | ||||
|             map.put(PROPNAME_BOUNDS, new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); | ||||
|             map.put(PROPNAME_MATRIX, copyImageMatrix(imageView)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.transition.Transition | ||||
|     public void captureStartValues(TransitionValues transitionValues) { | ||||
|         captureValues(transitionValues); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.transition.Transition | ||||
|     public void captureEndValues(TransitionValues transitionValues) { | ||||
|         captureValues(transitionValues); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.transition.Transition | ||||
|     public Animator createAnimator(ViewGroup viewGroup, TransitionValues transitionValues, TransitionValues transitionValues2) { | ||||
|         if (transitionValues == null || transitionValues2 == null) { | ||||
|             return null; | ||||
|         } | ||||
|         Rect rect = (Rect) transitionValues.values.get(PROPNAME_BOUNDS); | ||||
|         Rect rect2 = (Rect) transitionValues2.values.get(PROPNAME_BOUNDS); | ||||
|         if (rect == null || rect2 == null) { | ||||
|             return null; | ||||
|         } | ||||
|         Matrix matrix = (Matrix) transitionValues.values.get(PROPNAME_MATRIX); | ||||
|         Matrix matrix2 = (Matrix) transitionValues2.values.get(PROPNAME_MATRIX); | ||||
|         boolean z = (matrix == null && matrix2 == null) || (matrix != null && matrix.equals(matrix2)); | ||||
|         if (rect.equals(rect2) && z) { | ||||
|             return null; | ||||
|         } | ||||
|         ImageView imageView = (ImageView) transitionValues2.view; | ||||
|         Drawable drawable = imageView.getDrawable(); | ||||
|         int intrinsicWidth = drawable.getIntrinsicWidth(); | ||||
|         int intrinsicHeight = drawable.getIntrinsicHeight(); | ||||
|         if (intrinsicWidth <= 0 || intrinsicHeight <= 0) { | ||||
|             return createNullAnimator(imageView); | ||||
|         } | ||||
|         if (matrix == null) { | ||||
|             matrix = MatrixUtils.IDENTITY_MATRIX; | ||||
|         } | ||||
|         if (matrix2 == null) { | ||||
|             matrix2 = MatrixUtils.IDENTITY_MATRIX; | ||||
|         } | ||||
|         ANIMATED_TRANSFORM_PROPERTY.set(imageView, matrix); | ||||
|         return createMatrixAnimator(imageView, matrix, matrix2); | ||||
|     } | ||||
|  | ||||
|     private ObjectAnimator createNullAnimator(ImageView imageView) { | ||||
|         return ObjectAnimator.ofObject(imageView, (Property<ImageView, V>) ANIMATED_TRANSFORM_PROPERTY, (TypeEvaluator) NULL_MATRIX_EVALUATOR, (Object[]) new Matrix[]{MatrixUtils.IDENTITY_MATRIX, MatrixUtils.IDENTITY_MATRIX}); | ||||
|     } | ||||
|  | ||||
|     private ObjectAnimator createMatrixAnimator(ImageView imageView, Matrix matrix, Matrix matrix2) { | ||||
|         return ObjectAnimator.ofObject(imageView, (Property<ImageView, V>) ANIMATED_TRANSFORM_PROPERTY, (TypeEvaluator) new TransitionUtils.MatrixEvaluator(), (Object[]) new Matrix[]{matrix, matrix2}); | ||||
|     } | ||||
|  | ||||
|     private static Matrix copyImageMatrix(ImageView imageView) { | ||||
|         Drawable drawable = imageView.getDrawable(); | ||||
|         if (drawable.getIntrinsicWidth() > 0 && drawable.getIntrinsicHeight() > 0) { | ||||
|             int i = AnonymousClass3.$SwitchMap$android$widget$ImageView$ScaleType[imageView.getScaleType().ordinal()]; | ||||
|             if (i == 1) { | ||||
|                 return fitXYMatrix(imageView); | ||||
|             } | ||||
|             if (i == 2) { | ||||
|                 return centerCropMatrix(imageView); | ||||
|             } | ||||
|         } | ||||
|         return new Matrix(imageView.getImageMatrix()); | ||||
|     } | ||||
|  | ||||
|     /* renamed from: androidx.transition.ChangeImageTransform$3, reason: invalid class name */ | ||||
|     static /* synthetic */ class AnonymousClass3 { | ||||
|         static final /* synthetic */ int[] $SwitchMap$android$widget$ImageView$ScaleType; | ||||
|  | ||||
|         static { | ||||
|             int[] iArr = new int[ImageView.ScaleType.values().length]; | ||||
|             $SwitchMap$android$widget$ImageView$ScaleType = iArr; | ||||
|             try { | ||||
|                 iArr[ImageView.ScaleType.FIT_XY.ordinal()] = 1; | ||||
|             } catch (NoSuchFieldError unused) { | ||||
|             } | ||||
|             try { | ||||
|                 $SwitchMap$android$widget$ImageView$ScaleType[ImageView.ScaleType.CENTER_CROP.ordinal()] = 2; | ||||
|             } catch (NoSuchFieldError unused2) { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static Matrix fitXYMatrix(ImageView imageView) { | ||||
|         Drawable drawable = imageView.getDrawable(); | ||||
|         Matrix matrix = new Matrix(); | ||||
|         matrix.postScale(imageView.getWidth() / drawable.getIntrinsicWidth(), imageView.getHeight() / drawable.getIntrinsicHeight()); | ||||
|         return matrix; | ||||
|     } | ||||
|  | ||||
|     private static Matrix centerCropMatrix(ImageView imageView) { | ||||
|         Drawable drawable = imageView.getDrawable(); | ||||
|         int intrinsicWidth = drawable.getIntrinsicWidth(); | ||||
|         float width = imageView.getWidth(); | ||||
|         float f = intrinsicWidth; | ||||
|         int intrinsicHeight = drawable.getIntrinsicHeight(); | ||||
|         float height = imageView.getHeight(); | ||||
|         float f2 = intrinsicHeight; | ||||
|         float max = Math.max(width / f, height / f2); | ||||
|         int round = Math.round((width - (f * max)) / 2.0f); | ||||
|         int round2 = Math.round((height - (f2 * max)) / 2.0f); | ||||
|         Matrix matrix = new Matrix(); | ||||
|         matrix.postScale(max, max); | ||||
|         matrix.postTranslate(round, round2); | ||||
|         return matrix; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user