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

301 lines
12 KiB
Java

package com.google.android.material.internal;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import com.google.android.material.R;
import com.google.android.material.drawable.DrawableUtils;
import java.util.ArrayList;
import java.util.List;
/* loaded from: classes2.dex */
public class ViewUtils {
public static final int EDGE_TO_EDGE_FLAGS = 768;
/* loaded from: classes2.dex */
public interface OnApplyWindowInsetsListener {
WindowInsetsCompat onApplyWindowInsets(View view, WindowInsetsCompat windowInsetsCompat, RelativePadding relativePadding);
}
private ViewUtils() {
}
public static void showKeyboard(View view) {
showKeyboard(view, true);
}
public static void showKeyboard(View view, boolean z) {
WindowInsetsControllerCompat windowInsetsController;
if (z && (windowInsetsController = ViewCompat.getWindowInsetsController(view)) != null) {
windowInsetsController.show(WindowInsetsCompat.Type.ime());
} else {
getInputMethodManager(view).showSoftInput(view, 1);
}
}
public static void requestFocusAndShowKeyboard(View view) {
requestFocusAndShowKeyboard(view, true);
}
public static void requestFocusAndShowKeyboard(final View view, final boolean z) {
view.requestFocus();
view.post(new Runnable() { // from class: com.google.android.material.internal.ViewUtils$$ExternalSyntheticLambda0
@Override // java.lang.Runnable
public final void run() {
ViewUtils.showKeyboard(view, z);
}
});
}
public static void hideKeyboard(View view) {
hideKeyboard(view, true);
}
public static void hideKeyboard(View view, boolean z) {
WindowInsetsControllerCompat windowInsetsController;
if (z && (windowInsetsController = ViewCompat.getWindowInsetsController(view)) != null) {
windowInsetsController.hide(WindowInsetsCompat.Type.ime());
return;
}
InputMethodManager inputMethodManager = getInputMethodManager(view);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
private static InputMethodManager getInputMethodManager(View view) {
return (InputMethodManager) ContextCompat.getSystemService(view.getContext(), InputMethodManager.class);
}
public static void setBoundsFromRect(View view, Rect rect) {
view.setLeft(rect.left);
view.setTop(rect.top);
view.setRight(rect.right);
view.setBottom(rect.bottom);
}
public static Rect calculateRectFromBounds(View view) {
return calculateRectFromBounds(view, 0);
}
public static Rect calculateRectFromBounds(View view, int i) {
return new Rect(view.getLeft(), view.getTop() + i, view.getRight(), view.getBottom() + i);
}
public static Rect calculateOffsetRectFromBounds(View view, View view2) {
int[] iArr = new int[2];
view2.getLocationOnScreen(iArr);
int i = iArr[0];
int i2 = iArr[1];
int[] iArr2 = new int[2];
view.getLocationOnScreen(iArr2);
int i3 = i - iArr2[0];
int i4 = i2 - iArr2[1];
return new Rect(i3, i4, view2.getWidth() + i3, view2.getHeight() + i4);
}
public static List<View> getChildren(View view) {
ArrayList arrayList = new ArrayList();
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int i = 0; i < viewGroup.getChildCount(); i++) {
arrayList.add(viewGroup.getChildAt(i));
}
}
return arrayList;
}
public static PorterDuff.Mode parseTintMode(int i, PorterDuff.Mode mode) {
if (i == 3) {
return PorterDuff.Mode.SRC_OVER;
}
if (i == 5) {
return PorterDuff.Mode.SRC_IN;
}
if (i == 9) {
return PorterDuff.Mode.SRC_ATOP;
}
switch (i) {
case 14:
return PorterDuff.Mode.MULTIPLY;
case 15:
return PorterDuff.Mode.SCREEN;
case 16:
return PorterDuff.Mode.ADD;
default:
return mode;
}
}
public static boolean isLayoutRtl(View view) {
return ViewCompat.getLayoutDirection(view) == 1;
}
public static float dpToPx(Context context, int i) {
return TypedValue.applyDimension(1, i, context.getResources().getDisplayMetrics());
}
/* loaded from: classes2.dex */
public static class RelativePadding {
public int bottom;
public int end;
public int start;
public int top;
public RelativePadding(int i, int i2, int i3, int i4) {
this.start = i;
this.top = i2;
this.end = i3;
this.bottom = i4;
}
public RelativePadding(RelativePadding relativePadding) {
this.start = relativePadding.start;
this.top = relativePadding.top;
this.end = relativePadding.end;
this.bottom = relativePadding.bottom;
}
public void applyToView(View view) {
ViewCompat.setPaddingRelative(view, this.start, this.top, this.end, this.bottom);
}
}
public static void doOnApplyWindowInsets(View view, AttributeSet attributeSet, int i, int i2) {
doOnApplyWindowInsets(view, attributeSet, i, i2, null);
}
public static void doOnApplyWindowInsets(View view, AttributeSet attributeSet, int i, int i2, final OnApplyWindowInsetsListener onApplyWindowInsetsListener) {
TypedArray obtainStyledAttributes = view.getContext().obtainStyledAttributes(attributeSet, R.styleable.Insets, i, i2);
final boolean z = obtainStyledAttributes.getBoolean(R.styleable.Insets_paddingBottomSystemWindowInsets, false);
final boolean z2 = obtainStyledAttributes.getBoolean(R.styleable.Insets_paddingLeftSystemWindowInsets, false);
final boolean z3 = obtainStyledAttributes.getBoolean(R.styleable.Insets_paddingRightSystemWindowInsets, false);
obtainStyledAttributes.recycle();
doOnApplyWindowInsets(view, new OnApplyWindowInsetsListener() { // from class: com.google.android.material.internal.ViewUtils.1
@Override // com.google.android.material.internal.ViewUtils.OnApplyWindowInsetsListener
public WindowInsetsCompat onApplyWindowInsets(View view2, WindowInsetsCompat windowInsetsCompat, RelativePadding relativePadding) {
if (z) {
relativePadding.bottom += windowInsetsCompat.getSystemWindowInsetBottom();
}
boolean isLayoutRtl = ViewUtils.isLayoutRtl(view2);
if (z2) {
if (isLayoutRtl) {
relativePadding.end += windowInsetsCompat.getSystemWindowInsetLeft();
} else {
relativePadding.start += windowInsetsCompat.getSystemWindowInsetLeft();
}
}
if (z3) {
if (isLayoutRtl) {
relativePadding.start += windowInsetsCompat.getSystemWindowInsetRight();
} else {
relativePadding.end += windowInsetsCompat.getSystemWindowInsetRight();
}
}
relativePadding.applyToView(view2);
OnApplyWindowInsetsListener onApplyWindowInsetsListener2 = onApplyWindowInsetsListener;
return onApplyWindowInsetsListener2 != null ? onApplyWindowInsetsListener2.onApplyWindowInsets(view2, windowInsetsCompat, relativePadding) : windowInsetsCompat;
}
});
}
public static void doOnApplyWindowInsets(View view, final OnApplyWindowInsetsListener onApplyWindowInsetsListener) {
final RelativePadding relativePadding = new RelativePadding(ViewCompat.getPaddingStart(view), view.getPaddingTop(), ViewCompat.getPaddingEnd(view), view.getPaddingBottom());
ViewCompat.setOnApplyWindowInsetsListener(view, new androidx.core.view.OnApplyWindowInsetsListener() { // from class: com.google.android.material.internal.ViewUtils.2
@Override // androidx.core.view.OnApplyWindowInsetsListener
public WindowInsetsCompat onApplyWindowInsets(View view2, WindowInsetsCompat windowInsetsCompat) {
return OnApplyWindowInsetsListener.this.onApplyWindowInsets(view2, windowInsetsCompat, new RelativePadding(relativePadding));
}
});
requestApplyInsetsWhenAttached(view);
}
public static void requestApplyInsetsWhenAttached(View view) {
if (ViewCompat.isAttachedToWindow(view)) {
ViewCompat.requestApplyInsets(view);
} else {
view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { // from class: com.google.android.material.internal.ViewUtils.3
@Override // android.view.View.OnAttachStateChangeListener
public void onViewDetachedFromWindow(View view2) {
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewAttachedToWindow(View view2) {
view2.removeOnAttachStateChangeListener(this);
ViewCompat.requestApplyInsets(view2);
}
});
}
}
public static float getParentAbsoluteElevation(View view) {
float f = 0.0f;
for (ViewParent parent = view.getParent(); parent instanceof View; parent = parent.getParent()) {
f += ViewCompat.getElevation((View) parent);
}
return f;
}
public static ViewOverlayImpl getOverlay(View view) {
if (view == null) {
return null;
}
return new ViewOverlayApi18(view);
}
public static ViewGroup getContentView(View view) {
if (view == null) {
return null;
}
View rootView = view.getRootView();
ViewGroup viewGroup = (ViewGroup) rootView.findViewById(android.R.id.content);
if (viewGroup != null) {
return viewGroup;
}
if (rootView == view || !(rootView instanceof ViewGroup)) {
return null;
}
return (ViewGroup) rootView;
}
public static ViewOverlayImpl getContentViewOverlay(View view) {
return getOverlay(getContentView(view));
}
public static void addOnGlobalLayoutListener(View view, ViewTreeObserver.OnGlobalLayoutListener onGlobalLayoutListener) {
if (view != null) {
view.getViewTreeObserver().addOnGlobalLayoutListener(onGlobalLayoutListener);
}
}
public static void removeOnGlobalLayoutListener(View view, ViewTreeObserver.OnGlobalLayoutListener onGlobalLayoutListener) {
if (view != null) {
removeOnGlobalLayoutListener(view.getViewTreeObserver(), onGlobalLayoutListener);
}
}
public static void removeOnGlobalLayoutListener(ViewTreeObserver viewTreeObserver, ViewTreeObserver.OnGlobalLayoutListener onGlobalLayoutListener) {
viewTreeObserver.removeOnGlobalLayoutListener(onGlobalLayoutListener);
}
public static Integer getBackgroundColor(View view) {
ColorStateList colorStateListOrNull = DrawableUtils.getColorStateListOrNull(view.getBackground());
if (colorStateListOrNull != null) {
return Integer.valueOf(colorStateListOrNull.getDefaultColor());
}
return null;
}
}