mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-26 17:12:31 -06:00
301 lines
12 KiB
Java
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;
|
|
}
|
|
}
|