Rabbit-R1/android (non root)/java/sources/com/google/android/material/shape/InterpolateOnScrollPositionChangeHelper.java
2024-05-21 17:08:36 -04:00

69 lines
3.1 KiB
Java

package com.google.android.material.shape;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ScrollView;
/* loaded from: classes2.dex */
public class InterpolateOnScrollPositionChangeHelper {
private ScrollView containingScrollView;
private MaterialShapeDrawable materialShapeDrawable;
private View shapedView;
private final int[] scrollLocation = new int[2];
private final int[] containerLocation = new int[2];
private final ViewTreeObserver.OnScrollChangedListener scrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() { // from class: com.google.android.material.shape.InterpolateOnScrollPositionChangeHelper.1
@Override // android.view.ViewTreeObserver.OnScrollChangedListener
public void onScrollChanged() {
InterpolateOnScrollPositionChangeHelper.this.updateInterpolationForScreenPosition();
}
};
public void setContainingScrollView(ScrollView scrollView) {
this.containingScrollView = scrollView;
}
public void setMaterialShapeDrawable(MaterialShapeDrawable materialShapeDrawable) {
this.materialShapeDrawable = materialShapeDrawable;
}
public InterpolateOnScrollPositionChangeHelper(View view, MaterialShapeDrawable materialShapeDrawable, ScrollView scrollView) {
this.shapedView = view;
this.materialShapeDrawable = materialShapeDrawable;
this.containingScrollView = scrollView;
}
public void startListeningForScrollChanges(ViewTreeObserver viewTreeObserver) {
viewTreeObserver.addOnScrollChangedListener(this.scrollChangedListener);
}
public void stopListeningForScrollChanges(ViewTreeObserver viewTreeObserver) {
viewTreeObserver.removeOnScrollChangedListener(this.scrollChangedListener);
}
public void updateInterpolationForScreenPosition() {
ScrollView scrollView = this.containingScrollView;
if (scrollView == null) {
return;
}
if (scrollView.getChildCount() == 0) {
throw new IllegalStateException("Scroll bar must contain a child to calculate interpolation.");
}
this.containingScrollView.getLocationInWindow(this.scrollLocation);
this.containingScrollView.getChildAt(0).getLocationInWindow(this.containerLocation);
int top = (this.shapedView.getTop() - this.scrollLocation[1]) + this.containerLocation[1];
int height = this.shapedView.getHeight();
int height2 = this.containingScrollView.getHeight();
if (top < 0) {
this.materialShapeDrawable.setInterpolation(Math.max(0.0f, Math.min(1.0f, (top / height) + 1.0f)));
this.shapedView.invalidate();
return;
}
if (top + height > height2) {
this.materialShapeDrawable.setInterpolation(Math.max(0.0f, Math.min(1.0f, 1.0f - ((r0 - height2) / height))));
this.shapedView.invalidate();
} else if (this.materialShapeDrawable.getInterpolation() != 1.0f) {
this.materialShapeDrawable.setInterpolation(1.0f);
this.shapedView.invalidate();
}
}
}