mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
138 lines
6 KiB
Java
138 lines
6 KiB
Java
package com.google.android.material.transition;
|
|
|
|
import android.animation.Animator;
|
|
import android.animation.AnimatorListenerAdapter;
|
|
import android.animation.ObjectAnimator;
|
|
import android.animation.PropertyValuesHolder;
|
|
import android.content.Context;
|
|
import android.util.Property;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import androidx.core.view.ViewCompat;
|
|
import com.google.android.material.R;
|
|
import java.lang.annotation.Retention;
|
|
import java.lang.annotation.RetentionPolicy;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class SlideDistanceProvider implements VisibilityAnimatorProvider {
|
|
private static final int DEFAULT_DISTANCE = -1;
|
|
private int slideDistance = -1;
|
|
private int slideEdge;
|
|
|
|
@Retention(RetentionPolicy.SOURCE)
|
|
/* loaded from: classes2.dex */
|
|
public @interface GravityFlag {
|
|
}
|
|
|
|
public int getSlideDistance() {
|
|
return this.slideDistance;
|
|
}
|
|
|
|
public int getSlideEdge() {
|
|
return this.slideEdge;
|
|
}
|
|
|
|
public void setSlideEdge(int i) {
|
|
this.slideEdge = i;
|
|
}
|
|
|
|
public SlideDistanceProvider(int i) {
|
|
this.slideEdge = i;
|
|
}
|
|
|
|
public void setSlideDistance(int i) {
|
|
if (i < 0) {
|
|
throw new IllegalArgumentException("Slide distance must be positive. If attempting to reverse the direction of the slide, use setSlideEdge(int) instead.");
|
|
}
|
|
this.slideDistance = i;
|
|
}
|
|
|
|
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
|
|
public Animator createAppear(ViewGroup viewGroup, View view) {
|
|
return createTranslationAppearAnimator(viewGroup, view, this.slideEdge, getSlideDistanceOrDefault(view.getContext()));
|
|
}
|
|
|
|
@Override // com.google.android.material.transition.VisibilityAnimatorProvider
|
|
public Animator createDisappear(ViewGroup viewGroup, View view) {
|
|
return createTranslationDisappearAnimator(viewGroup, view, this.slideEdge, getSlideDistanceOrDefault(view.getContext()));
|
|
}
|
|
|
|
private int getSlideDistanceOrDefault(Context context) {
|
|
int i = this.slideDistance;
|
|
return i != -1 ? i : context.getResources().getDimensionPixelSize(R.dimen.mtrl_transition_shared_axis_slide_distance);
|
|
}
|
|
|
|
private static Animator createTranslationAppearAnimator(View view, View view2, int i, int i2) {
|
|
float translationX = view2.getTranslationX();
|
|
float translationY = view2.getTranslationY();
|
|
if (i == 3) {
|
|
return createTranslationXAnimator(view2, i2 + translationX, translationX, translationX);
|
|
}
|
|
if (i == 5) {
|
|
return createTranslationXAnimator(view2, translationX - i2, translationX, translationX);
|
|
}
|
|
if (i == 48) {
|
|
return createTranslationYAnimator(view2, translationY - i2, translationY, translationY);
|
|
}
|
|
if (i == 80) {
|
|
return createTranslationYAnimator(view2, i2 + translationY, translationY, translationY);
|
|
}
|
|
if (i == 8388611) {
|
|
return createTranslationXAnimator(view2, isRtl(view) ? i2 + translationX : translationX - i2, translationX, translationX);
|
|
}
|
|
if (i == 8388613) {
|
|
return createTranslationXAnimator(view2, isRtl(view) ? translationX - i2 : i2 + translationX, translationX, translationX);
|
|
}
|
|
throw new IllegalArgumentException("Invalid slide direction: " + i);
|
|
}
|
|
|
|
private static Animator createTranslationDisappearAnimator(View view, View view2, int i, int i2) {
|
|
float translationX = view2.getTranslationX();
|
|
float translationY = view2.getTranslationY();
|
|
if (i == 3) {
|
|
return createTranslationXAnimator(view2, translationX, translationX - i2, translationX);
|
|
}
|
|
if (i == 5) {
|
|
return createTranslationXAnimator(view2, translationX, i2 + translationX, translationX);
|
|
}
|
|
if (i == 48) {
|
|
return createTranslationYAnimator(view2, translationY, i2 + translationY, translationY);
|
|
}
|
|
if (i == 80) {
|
|
return createTranslationYAnimator(view2, translationY, translationY - i2, translationY);
|
|
}
|
|
if (i == 8388611) {
|
|
return createTranslationXAnimator(view2, translationX, isRtl(view) ? translationX - i2 : i2 + translationX, translationX);
|
|
}
|
|
if (i == 8388613) {
|
|
return createTranslationXAnimator(view2, translationX, isRtl(view) ? i2 + translationX : translationX - i2, translationX);
|
|
}
|
|
throw new IllegalArgumentException("Invalid slide direction: " + i);
|
|
}
|
|
|
|
private static Animator createTranslationXAnimator(final View view, float f, float f2, final float f3) {
|
|
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_X, f, f2));
|
|
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.SlideDistanceProvider.1
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
view.setTranslationX(f3);
|
|
}
|
|
});
|
|
return ofPropertyValuesHolder;
|
|
}
|
|
|
|
private static Animator createTranslationYAnimator(final View view, float f, float f2, final float f3) {
|
|
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat((Property<?, Float>) View.TRANSLATION_Y, f, f2));
|
|
ofPropertyValuesHolder.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.transition.SlideDistanceProvider.2
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
view.setTranslationY(f3);
|
|
}
|
|
});
|
|
return ofPropertyValuesHolder;
|
|
}
|
|
|
|
private static boolean isRtl(View view) {
|
|
return ViewCompat.getLayoutDirection(view) == 1;
|
|
}
|
|
}
|