Rabbit-R1/original r1/java/sources/androidx/transition/ChangeImageTransform.java
2024-05-21 17:08:36 -04:00

174 lines
7.6 KiB
Java

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: classes2.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) {
Rect rect = (Rect) transitionValues.values.get(PROPNAME_BOUNDS);
Rect rect2 = (Rect) transitionValues2.values.get(PROPNAME_BOUNDS);
if (rect != null && rect2 != 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);
}
}
return null;
}
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());
}
return new Matrix(imageView.getImageMatrix());
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: androidx.transition.ChangeImageTransform$3, reason: invalid class name */
/* loaded from: classes2.dex */
public 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;
}
}