package androidx.core.view; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ClipData; import android.content.Context; import android.content.ContextWrapper; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.util.SparseArray; import android.view.Display; import android.view.KeyEvent; import android.view.PointerIcon; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.ViewTreeObserver; import android.view.Window; import android.view.WindowInsets; import android.view.WindowInsetsController; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeProvider; import androidx.annotation.FloatRange; import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.Px; import androidx.annotation.RequiresApi; import androidx.annotation.RestrictTo; import androidx.annotation.UiThread; import androidx.collection.SimpleArrayMap; import androidx.core.R; import androidx.core.util.Preconditions; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.WindowInsetsAnimationCompat; import androidx.core.view.WindowInsetsCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.core.view.accessibility.AccessibilityNodeProviderCompat; import androidx.core.view.accessibility.AccessibilityViewCommand; import b.d.b.a.a; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.atomic.AtomicInteger; @SuppressLint({"PrivateConstructorForUtilityClass"}) /* loaded from: classes.dex */ public class ViewCompat { public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; @Deprecated public static final int LAYER_TYPE_NONE = 0; @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; public static final int LAYOUT_DIRECTION_INHERIT = 2; public static final int LAYOUT_DIRECTION_LOCALE = 3; public static final int LAYOUT_DIRECTION_LTR = 0; public static final int LAYOUT_DIRECTION_RTL = 1; @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; @Deprecated public static final int MEASURED_STATE_MASK = -16777216; @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; @Deprecated public static final int OVER_SCROLL_NEVER = 2; public static final int SCROLL_AXIS_HORIZONTAL = 1; public static final int SCROLL_AXIS_NONE = 0; public static final int SCROLL_AXIS_VERTICAL = 2; public static final int SCROLL_INDICATOR_BOTTOM = 2; public static final int SCROLL_INDICATOR_END = 32; public static final int SCROLL_INDICATOR_LEFT = 4; public static final int SCROLL_INDICATOR_RIGHT = 8; public static final int SCROLL_INDICATOR_START = 16; public static final int SCROLL_INDICATOR_TOP = 1; private static final String TAG = "ViewCompat"; public static final int TYPE_NON_TOUCH = 1; public static final int TYPE_TOUCH = 0; private static Field sAccessibilityDelegateField; private static Method sChildrenDrawingOrderMethod; private static Method sDispatchFinishTemporaryDetach; private static Method sDispatchStartTemporaryDetach; private static Field sMinHeightField; private static boolean sMinHeightFieldFetched; private static Field sMinWidthField; private static boolean sMinWidthFieldFetched; private static boolean sTempDetachBound; private static ThreadLocal sThreadLocalRect; private static WeakHashMap sTransitionNameMap; private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1); private static WeakHashMap sViewPropertyAnimatorMap = null; private static boolean sAccessibilityDelegateCheckFailed = false; private static final int[] ACCESSIBILITY_ACTIONS_RESOURCE_IDS = {R.id.accessibility_custom_action_0, R.id.accessibility_custom_action_1, R.id.accessibility_custom_action_2, R.id.accessibility_custom_action_3, R.id.accessibility_custom_action_4, R.id.accessibility_custom_action_5, R.id.accessibility_custom_action_6, R.id.accessibility_custom_action_7, R.id.accessibility_custom_action_8, R.id.accessibility_custom_action_9, R.id.accessibility_custom_action_10, R.id.accessibility_custom_action_11, R.id.accessibility_custom_action_12, R.id.accessibility_custom_action_13, R.id.accessibility_custom_action_14, R.id.accessibility_custom_action_15, R.id.accessibility_custom_action_16, R.id.accessibility_custom_action_17, R.id.accessibility_custom_action_18, R.id.accessibility_custom_action_19, R.id.accessibility_custom_action_20, R.id.accessibility_custom_action_21, R.id.accessibility_custom_action_22, R.id.accessibility_custom_action_23, R.id.accessibility_custom_action_24, R.id.accessibility_custom_action_25, R.id.accessibility_custom_action_26, R.id.accessibility_custom_action_27, R.id.accessibility_custom_action_28, R.id.accessibility_custom_action_29, R.id.accessibility_custom_action_30, R.id.accessibility_custom_action_31}; private static final OnReceiveContentViewBehavior NO_OP_ON_RECEIVE_CONTENT_VIEW_BEHAVIOR = new AnonymousClass1(); private static AccessibilityPaneVisibilityManager sAccessibilityPaneVisibilityManager = new AccessibilityPaneVisibilityManager(); /* renamed from: androidx.core.view.ViewCompat$1 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass1 implements OnReceiveContentViewBehavior { @Override // androidx.core.view.OnReceiveContentViewBehavior public ContentInfoCompat onReceiveContent(@NonNull ContentInfoCompat contentInfoCompat) { return contentInfoCompat; } } /* renamed from: androidx.core.view.ViewCompat$2 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass2 extends AccessibilityViewProperty { public AnonymousClass2(int i, Class cls, int i2) { super(i, cls, i2); } /* JADX WARN: Can't rename method to resolve collision */ @Override // androidx.core.view.ViewCompat.AccessibilityViewProperty @RequiresApi(28) public Boolean frameworkGet(View view) { return Boolean.valueOf(view.isScreenReaderFocusable()); } @RequiresApi(28) public void frameworkSet(View view, Boolean bool) { view.setScreenReaderFocusable(bool.booleanValue()); } public boolean shouldUpdate(Boolean bool, Boolean bool2) { return !booleanNullToFalseEquals(bool, bool2); } } /* renamed from: androidx.core.view.ViewCompat$3 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass3 extends AccessibilityViewProperty { public AnonymousClass3(int i, Class cls, int i2, int i3) { super(i, cls, i2, i3); } /* JADX WARN: Can't rename method to resolve collision */ @Override // androidx.core.view.ViewCompat.AccessibilityViewProperty @RequiresApi(28) public CharSequence frameworkGet(View view) { return view.getAccessibilityPaneTitle(); } @RequiresApi(28) public void frameworkSet(View view, CharSequence charSequence) { view.setAccessibilityPaneTitle(charSequence); } public boolean shouldUpdate(CharSequence charSequence, CharSequence charSequence2) { return !TextUtils.equals(charSequence, charSequence2); } } /* renamed from: androidx.core.view.ViewCompat$4 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass4 extends AccessibilityViewProperty { public AnonymousClass4(int i, Class cls, int i2, int i3) { super(i, cls, i2, i3); } /* JADX WARN: Can't rename method to resolve collision */ @Override // androidx.core.view.ViewCompat.AccessibilityViewProperty @RequiresApi(30) public CharSequence frameworkGet(View view) { return view.getStateDescription(); } @RequiresApi(30) public void frameworkSet(View view, CharSequence charSequence) { view.setStateDescription(charSequence); } public boolean shouldUpdate(CharSequence charSequence, CharSequence charSequence2) { return !TextUtils.equals(charSequence, charSequence2); } } /* renamed from: androidx.core.view.ViewCompat$5 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass5 extends AccessibilityViewProperty { public AnonymousClass5(int i, Class cls, int i2) { super(i, cls, i2); } /* JADX WARN: Can't rename method to resolve collision */ @Override // androidx.core.view.ViewCompat.AccessibilityViewProperty @RequiresApi(28) public Boolean frameworkGet(View view) { return Boolean.valueOf(view.isAccessibilityHeading()); } @RequiresApi(28) public void frameworkSet(View view, Boolean bool) { view.setAccessibilityHeading(bool.booleanValue()); } public boolean shouldUpdate(Boolean bool, Boolean bool2) { return !booleanNullToFalseEquals(bool, bool2); } } /* loaded from: classes.dex */ public static class AccessibilityPaneVisibilityManager implements ViewTreeObserver.OnGlobalLayoutListener, View.OnAttachStateChangeListener { private WeakHashMap mPanesToVisible = new WeakHashMap<>(); @RequiresApi(19) private void checkPaneVisibility(View view, boolean z2) { boolean z3 = view.getVisibility() == 0; if (z2 != z3) { ViewCompat.notifyViewAccessibilityStateChangedIfNeeded(view, z3 ? 16 : 32); this.mPanesToVisible.put(view, Boolean.valueOf(z3)); } } @RequiresApi(19) private void registerForLayoutCallback(View view) { view.getViewTreeObserver().addOnGlobalLayoutListener(this); } @RequiresApi(19) private void unregisterForLayoutCallback(View view) { view.getViewTreeObserver().removeOnGlobalLayoutListener(this); } @RequiresApi(19) public void addAccessibilityPane(View view) { this.mPanesToVisible.put(view, Boolean.valueOf(view.getVisibility() == 0)); view.addOnAttachStateChangeListener(this); if (view.isAttachedToWindow()) { registerForLayoutCallback(view); } } @Override // android.view.ViewTreeObserver.OnGlobalLayoutListener @RequiresApi(19) public void onGlobalLayout() { if (Build.VERSION.SDK_INT < 28) { for (Map.Entry entry : this.mPanesToVisible.entrySet()) { checkPaneVisibility(entry.getKey(), entry.getValue().booleanValue()); } } } @Override // android.view.View.OnAttachStateChangeListener @RequiresApi(19) public void onViewAttachedToWindow(View view) { registerForLayoutCallback(view); } @Override // android.view.View.OnAttachStateChangeListener public void onViewDetachedFromWindow(View view) { } @RequiresApi(19) public void removeAccessibilityPane(View view) { this.mPanesToVisible.remove(view); view.removeOnAttachStateChangeListener(this); unregisterForLayoutCallback(view); } } /* loaded from: classes.dex */ public static abstract class AccessibilityViewProperty { private final int mContentChangeType; private final int mFrameworkMinimumSdk; private final int mTagKey; private final Class mType; public AccessibilityViewProperty(int i, Class cls, int i2) { this(i, cls, 0, i2); } public AccessibilityViewProperty(int i, Class cls, int i2, int i3) { this.mTagKey = i; this.mType = cls; this.mContentChangeType = i2; this.mFrameworkMinimumSdk = i3; } private boolean extrasAvailable() { return true; } private boolean frameworkAvailable() { return Build.VERSION.SDK_INT >= this.mFrameworkMinimumSdk; } public boolean booleanNullToFalseEquals(Boolean bool, Boolean bool2) { return (bool == null ? false : bool.booleanValue()) == (bool2 == null ? false : bool2.booleanValue()); } public abstract T frameworkGet(View view); public abstract void frameworkSet(View view, T t); public T get(View view) { if (frameworkAvailable()) { return frameworkGet(view); } if (!extrasAvailable()) { return null; } T t = (T) view.getTag(this.mTagKey); if (this.mType.isInstance(t)) { return t; } return null; } public void set(View view, T t) { if (frameworkAvailable()) { frameworkSet(view, t); } else if (extrasAvailable() && shouldUpdate(get(view), t)) { ViewCompat.getOrCreateAccessibilityDelegateCompat(view); view.setTag(this.mTagKey, t); ViewCompat.notifyViewAccessibilityStateChangedIfNeeded(view, this.mContentChangeType); } } public boolean shouldUpdate(T t, T t2) { return !t2.equals(t); } } @RequiresApi(21) /* loaded from: classes.dex */ public static class Api21Impl { /* renamed from: androidx.core.view.ViewCompat$Api21Impl$1 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass1 implements View.OnApplyWindowInsetsListener { public WindowInsetsCompat mLastInsets = null; public final /* synthetic */ OnApplyWindowInsetsListener val$listener; public final /* synthetic */ View val$v; public AnonymousClass1(View view, OnApplyWindowInsetsListener onApplyWindowInsetsListener) { this.val$v = view; this.val$listener = onApplyWindowInsetsListener; } @Override // android.view.View.OnApplyWindowInsetsListener public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) { WindowInsetsCompat windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat(windowInsets, view); int i = Build.VERSION.SDK_INT; if (i < 30) { Api21Impl.callCompatInsetAnimationCallback(windowInsets, this.val$v); if (windowInsetsCompat.equals(this.mLastInsets)) { return this.val$listener.onApplyWindowInsets(view, windowInsetsCompat).toWindowInsets(); } } this.mLastInsets = windowInsetsCompat; WindowInsetsCompat onApplyWindowInsets = this.val$listener.onApplyWindowInsets(view, windowInsetsCompat); if (i >= 30) { return onApplyWindowInsets.toWindowInsets(); } ViewCompat.requestApplyInsets(view); return onApplyWindowInsets.toWindowInsets(); } } private Api21Impl() { } public static void callCompatInsetAnimationCallback(@NonNull WindowInsets windowInsets, @NonNull View view) { View.OnApplyWindowInsetsListener onApplyWindowInsetsListener = (View.OnApplyWindowInsetsListener) view.getTag(R.id.tag_window_insets_animation_callback); if (onApplyWindowInsetsListener != null) { onApplyWindowInsetsListener.onApplyWindowInsets(view, windowInsets); } } public static WindowInsetsCompat computeSystemWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat, @NonNull Rect rect) { WindowInsets windowInsets = windowInsetsCompat.toWindowInsets(); if (windowInsets != null) { return WindowInsetsCompat.toWindowInsetsCompat(view.computeSystemWindowInsets(windowInsets, rect), view); } rect.setEmpty(); return windowInsetsCompat; } @Nullable public static WindowInsetsCompat getRootWindowInsets(@NonNull View view) { return WindowInsetsCompat.Api21ReflectionHolder.getRootWindowInsets(view); } public static void setOnApplyWindowInsetsListener(@NonNull View view, @Nullable OnApplyWindowInsetsListener onApplyWindowInsetsListener) { if (Build.VERSION.SDK_INT < 30) { view.setTag(R.id.tag_on_apply_window_listener, onApplyWindowInsetsListener); } if (onApplyWindowInsetsListener == null) { view.setOnApplyWindowInsetsListener((View.OnApplyWindowInsetsListener) view.getTag(R.id.tag_window_insets_animation_callback)); } else { view.setOnApplyWindowInsetsListener(new AnonymousClass1(view, onApplyWindowInsetsListener)); } } } @RequiresApi(23) /* loaded from: classes.dex */ public static class Api23Impl { private Api23Impl() { } @Nullable public static WindowInsetsCompat getRootWindowInsets(@NonNull View view) { WindowInsets rootWindowInsets = view.getRootWindowInsets(); if (rootWindowInsets == null) { return null; } WindowInsetsCompat windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat(rootWindowInsets); windowInsetsCompat.setRootWindowInsets(windowInsetsCompat); windowInsetsCompat.copyRootViewBounds(view.getRootView()); return windowInsetsCompat; } } @RequiresApi(29) /* loaded from: classes.dex */ public static class Api29Impl { private Api29Impl() { } public static void saveAttributeDataForStyleable(@NonNull View view, @NonNull Context context, @NonNull int[] iArr, @Nullable AttributeSet attributeSet, @NonNull TypedArray typedArray, int i, int i2) { view.saveAttributeDataForStyleable(context, iArr, attributeSet, typedArray, i, i2); } } @RequiresApi(30) /* loaded from: classes.dex */ public static class Api30Impl { private Api30Impl() { } @Nullable public static WindowInsetsControllerCompat getWindowInsetsController(@NonNull View view) { WindowInsetsController windowInsetsController = view.getWindowInsetsController(); if (windowInsetsController != null) { return WindowInsetsControllerCompat.toWindowInsetsControllerCompat(windowInsetsController); } return null; } } @RequiresApi(28) /* loaded from: classes.dex */ public static class CompatImplApi28 { /* renamed from: androidx.core.view.ViewCompat$CompatImplApi28$1 reason: invalid class name */ /* loaded from: classes.dex */ public class AnonymousClass1 implements View.OnUnhandledKeyEventListener { public final /* synthetic */ OnUnhandledKeyEventListenerCompat val$listener; public AnonymousClass1(OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) { this.val$listener = onUnhandledKeyEventListenerCompat; } @Override // android.view.View.OnUnhandledKeyEventListener public boolean onUnhandledKeyEvent(View view, KeyEvent keyEvent) { return this.val$listener.onUnhandledKeyEvent(view, keyEvent); } } private CompatImplApi28() { } public static void addOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) { int i = R.id.tag_unhandled_key_listeners; SimpleArrayMap simpleArrayMap = (SimpleArrayMap) view.getTag(i); if (simpleArrayMap == null) { simpleArrayMap = new SimpleArrayMap(); view.setTag(i, simpleArrayMap); } AnonymousClass1 r0 = new AnonymousClass1(onUnhandledKeyEventListenerCompat); simpleArrayMap.put(onUnhandledKeyEventListenerCompat, r0); view.addOnUnhandledKeyEventListener(r0); } public static void removeOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) { View.OnUnhandledKeyEventListener onUnhandledKeyEventListener; SimpleArrayMap simpleArrayMap = (SimpleArrayMap) view.getTag(R.id.tag_unhandled_key_listeners); if (simpleArrayMap != null && (onUnhandledKeyEventListener = (View.OnUnhandledKeyEventListener) simpleArrayMap.get(onUnhandledKeyEventListenerCompat)) != null) { view.removeOnUnhandledKeyEventListener(onUnhandledKeyEventListener); } } } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public @interface FocusDirection { } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public @interface FocusRealDirection { } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public @interface FocusRelativeDirection { } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public @interface NestedScrollType { } /* loaded from: classes.dex */ public interface OnUnhandledKeyEventListenerCompat { boolean onUnhandledKeyEvent(View view, KeyEvent keyEvent); } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public @interface ScrollAxis { } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public @interface ScrollIndicators { } /* loaded from: classes.dex */ public static class UnhandledKeyEventManager { private static final ArrayList> sViewsWithListeners = new ArrayList<>(); @Nullable private WeakHashMap mViewsContainingListeners = null; private SparseArray> mCapturedKeys = null; private WeakReference mLastDispatchedPreViewKeyEvent = null; public static UnhandledKeyEventManager at(View view) { int i = R.id.tag_unhandled_key_event_manager; UnhandledKeyEventManager unhandledKeyEventManager = (UnhandledKeyEventManager) view.getTag(i); if (unhandledKeyEventManager != null) { return unhandledKeyEventManager; } UnhandledKeyEventManager unhandledKeyEventManager2 = new UnhandledKeyEventManager(); view.setTag(i, unhandledKeyEventManager2); return unhandledKeyEventManager2; } @Nullable private View dispatchInOrder(View view, KeyEvent keyEvent) { WeakHashMap weakHashMap = this.mViewsContainingListeners; if (weakHashMap != null && weakHashMap.containsKey(view)) { if (view instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) view; for (int childCount = viewGroup.getChildCount() - 1; childCount >= 0; childCount--) { View dispatchInOrder = dispatchInOrder(viewGroup.getChildAt(childCount), keyEvent); if (dispatchInOrder != null) { return dispatchInOrder; } } } if (onUnhandledKeyEvent(view, keyEvent)) { return view; } } return null; } private SparseArray> getCapturedKeys() { if (this.mCapturedKeys == null) { this.mCapturedKeys = new SparseArray<>(); } return this.mCapturedKeys; } private boolean onUnhandledKeyEvent(@NonNull View view, @NonNull KeyEvent keyEvent) { ArrayList arrayList = (ArrayList) view.getTag(R.id.tag_unhandled_key_listeners); if (arrayList == null) { return false; } for (int size = arrayList.size() - 1; size >= 0; size--) { if (((OnUnhandledKeyEventListenerCompat) arrayList.get(size)).onUnhandledKeyEvent(view, keyEvent)) { return true; } } return false; } private void recalcViewsWithUnhandled() { WeakHashMap weakHashMap = this.mViewsContainingListeners; if (weakHashMap != null) { weakHashMap.clear(); } ArrayList> arrayList = sViewsWithListeners; if (!arrayList.isEmpty()) { synchronized (arrayList) { if (this.mViewsContainingListeners == null) { this.mViewsContainingListeners = new WeakHashMap<>(); } for (int size = arrayList.size() - 1; size >= 0; size--) { ArrayList> arrayList2 = sViewsWithListeners; View view = arrayList2.get(size).get(); if (view == null) { arrayList2.remove(size); } else { this.mViewsContainingListeners.put(view, Boolean.TRUE); for (ViewParent parent = view.getParent(); parent instanceof View; parent = parent.getParent()) { this.mViewsContainingListeners.put((View) parent, Boolean.TRUE); } } } } } } public static void registerListeningView(View view) { ArrayList> arrayList = sViewsWithListeners; synchronized (arrayList) { Iterator> it = arrayList.iterator(); while (it.hasNext()) { if (it.next().get() == view) { return; } } sViewsWithListeners.add(new WeakReference<>(view)); } } public static void unregisterListeningView(View view) { synchronized (sViewsWithListeners) { int i = 0; while (true) { ArrayList> arrayList = sViewsWithListeners; if (i >= arrayList.size()) { return; } if (arrayList.get(i).get() == view) { arrayList.remove(i); return; } i++; } } } public boolean dispatch(View view, KeyEvent keyEvent) { if (keyEvent.getAction() == 0) { recalcViewsWithUnhandled(); } View dispatchInOrder = dispatchInOrder(view, keyEvent); if (keyEvent.getAction() == 0) { int keyCode = keyEvent.getKeyCode(); if (dispatchInOrder != null && !KeyEvent.isModifierKey(keyCode)) { getCapturedKeys().put(keyCode, new WeakReference<>(dispatchInOrder)); } } return dispatchInOrder != null; } public boolean preDispatch(KeyEvent keyEvent) { int indexOfKey; WeakReference weakReference = this.mLastDispatchedPreViewKeyEvent; if (weakReference != null && weakReference.get() == keyEvent) { return false; } this.mLastDispatchedPreViewKeyEvent = new WeakReference<>(keyEvent); WeakReference weakReference2 = null; SparseArray> capturedKeys = getCapturedKeys(); if (keyEvent.getAction() == 1 && (indexOfKey = capturedKeys.indexOfKey(keyEvent.getKeyCode())) >= 0) { weakReference2 = capturedKeys.valueAt(indexOfKey); capturedKeys.removeAt(indexOfKey); } if (weakReference2 == null) { weakReference2 = capturedKeys.get(keyEvent.getKeyCode()); } if (weakReference2 == null) { return false; } View view = weakReference2.get(); if (view != null && ViewCompat.isAttachedToWindow(view)) { onUnhandledKeyEvent(view, keyEvent); } return true; } } private static AccessibilityViewProperty accessibilityHeadingProperty() { return new AnonymousClass5(R.id.tag_accessibility_heading, Boolean.class, 28); } public static int addAccessibilityAction(@NonNull View view, @NonNull CharSequence charSequence, @NonNull AccessibilityViewCommand accessibilityViewCommand) { int availableActionIdFromResources = getAvailableActionIdFromResources(view, charSequence); if (availableActionIdFromResources != -1) { addAccessibilityAction(view, new AccessibilityNodeInfoCompat.AccessibilityActionCompat(availableActionIdFromResources, charSequence, accessibilityViewCommand)); } return availableActionIdFromResources; } private static void addAccessibilityAction(@NonNull View view, @NonNull AccessibilityNodeInfoCompat.AccessibilityActionCompat accessibilityActionCompat) { getOrCreateAccessibilityDelegateCompat(view); removeActionWithId(accessibilityActionCompat.getId(), view); getActionList(view).add(accessibilityActionCompat); notifyViewAccessibilityStateChangedIfNeeded(view, 0); } public static void addKeyboardNavigationClusters(@NonNull View view, @NonNull Collection collection, int i) { if (Build.VERSION.SDK_INT >= 26) { view.addKeyboardNavigationClusters(collection, i); } } public static void addOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) { if (Build.VERSION.SDK_INT >= 28) { CompatImplApi28.addOnUnhandledKeyEventListener(view, onUnhandledKeyEventListenerCompat); return; } int i = R.id.tag_unhandled_key_listeners; ArrayList arrayList = (ArrayList) view.getTag(i); if (arrayList == null) { arrayList = new ArrayList(); view.setTag(i, arrayList); } arrayList.add(onUnhandledKeyEventListenerCompat); if (arrayList.size() == 1) { UnhandledKeyEventManager.registerListeningView(view); } } @NonNull public static ViewPropertyAnimatorCompat animate(@NonNull View view) { if (sViewPropertyAnimatorMap == null) { sViewPropertyAnimatorMap = new WeakHashMap<>(); } ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = sViewPropertyAnimatorMap.get(view); if (viewPropertyAnimatorCompat != null) { return viewPropertyAnimatorCompat; } ViewPropertyAnimatorCompat viewPropertyAnimatorCompat2 = new ViewPropertyAnimatorCompat(view); sViewPropertyAnimatorMap.put(view, viewPropertyAnimatorCompat2); return viewPropertyAnimatorCompat2; } private static void bindTempDetach() { try { sDispatchStartTemporaryDetach = View.class.getDeclaredMethod("dispatchStartTemporaryDetach", new Class[0]); sDispatchFinishTemporaryDetach = View.class.getDeclaredMethod("dispatchFinishTemporaryDetach", new Class[0]); } catch (NoSuchMethodException e) { Log.e(TAG, "Couldn't find method", e); } sTempDetachBound = true; } @Deprecated public static boolean canScrollHorizontally(View view, int i) { return view.canScrollHorizontally(i); } @Deprecated public static boolean canScrollVertically(View view, int i) { return view.canScrollVertically(i); } public static void cancelDragAndDrop(@NonNull View view) { if (Build.VERSION.SDK_INT >= 24) { view.cancelDragAndDrop(); } } @Deprecated public static int combineMeasuredStates(int i, int i2) { return View.combineMeasuredStates(i, i2); } private static void compatOffsetLeftAndRight(View view, int i) { view.offsetLeftAndRight(i); if (view.getVisibility() == 0) { tickleInvalidationFlag(view); ViewParent parent = view.getParent(); if (parent instanceof View) { tickleInvalidationFlag((View) parent); } } } private static void compatOffsetTopAndBottom(View view, int i) { view.offsetTopAndBottom(i); if (view.getVisibility() == 0) { tickleInvalidationFlag(view); ViewParent parent = view.getParent(); if (parent instanceof View) { tickleInvalidationFlag((View) parent); } } } @NonNull public static WindowInsetsCompat computeSystemWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat, @NonNull Rect rect) { return Api21Impl.computeSystemWindowInsets(view, windowInsetsCompat, rect); } @NonNull public static WindowInsetsCompat dispatchApplyWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat) { WindowInsets windowInsets = windowInsetsCompat.toWindowInsets(); if (windowInsets != null) { WindowInsets dispatchApplyWindowInsets = view.dispatchApplyWindowInsets(windowInsets); if (!dispatchApplyWindowInsets.equals(windowInsets)) { return WindowInsetsCompat.toWindowInsetsCompat(dispatchApplyWindowInsets, view); } } return windowInsetsCompat; } public static void dispatchFinishTemporaryDetach(@NonNull View view) { if (Build.VERSION.SDK_INT >= 24) { view.dispatchFinishTemporaryDetach(); return; } if (!sTempDetachBound) { bindTempDetach(); } Method method = sDispatchFinishTemporaryDetach; if (method != null) { try { method.invoke(view, new Object[0]); } catch (Exception e) { Log.d(TAG, "Error calling dispatchFinishTemporaryDetach", e); } } else { view.onFinishTemporaryDetach(); } } public static boolean dispatchNestedFling(@NonNull View view, float f, float f2, boolean z2) { return view.dispatchNestedFling(f, f2, z2); } public static boolean dispatchNestedPreFling(@NonNull View view, float f, float f2) { return view.dispatchNestedPreFling(f, f2); } public static boolean dispatchNestedPreScroll(@NonNull View view, int i, int i2, @Nullable int[] iArr, @Nullable int[] iArr2) { return view.dispatchNestedPreScroll(i, i2, iArr, iArr2); } public static boolean dispatchNestedPreScroll(@NonNull View view, int i, int i2, @Nullable int[] iArr, @Nullable int[] iArr2, int i3) { if (view instanceof NestedScrollingChild2) { return ((NestedScrollingChild2) view).dispatchNestedPreScroll(i, i2, iArr, iArr2, i3); } if (i3 == 0) { return dispatchNestedPreScroll(view, i, i2, iArr, iArr2); } return false; } public static void dispatchNestedScroll(@NonNull View view, int i, int i2, int i3, int i4, @Nullable int[] iArr, int i5, @NonNull int[] iArr2) { if (view instanceof NestedScrollingChild3) { ((NestedScrollingChild3) view).dispatchNestedScroll(i, i2, i3, i4, iArr, i5, iArr2); } else { dispatchNestedScroll(view, i, i2, i3, i4, iArr, i5); } } public static boolean dispatchNestedScroll(@NonNull View view, int i, int i2, int i3, int i4, @Nullable int[] iArr) { return view.dispatchNestedScroll(i, i2, i3, i4, iArr); } public static boolean dispatchNestedScroll(@NonNull View view, int i, int i2, int i3, int i4, @Nullable int[] iArr, int i5) { if (view instanceof NestedScrollingChild2) { return ((NestedScrollingChild2) view).dispatchNestedScroll(i, i2, i3, i4, iArr, i5); } if (i5 == 0) { return dispatchNestedScroll(view, i, i2, i3, i4, iArr); } return false; } public static void dispatchStartTemporaryDetach(@NonNull View view) { if (Build.VERSION.SDK_INT >= 24) { view.dispatchStartTemporaryDetach(); return; } if (!sTempDetachBound) { bindTempDetach(); } Method method = sDispatchStartTemporaryDetach; if (method != null) { try { method.invoke(view, new Object[0]); } catch (Exception e) { Log.d(TAG, "Error calling dispatchStartTemporaryDetach", e); } } else { view.onStartTemporaryDetach(); } } @UiThread public static boolean dispatchUnhandledKeyEventBeforeCallback(View view, KeyEvent keyEvent) { if (Build.VERSION.SDK_INT >= 28) { return false; } return UnhandledKeyEventManager.at(view).dispatch(view, keyEvent); } @UiThread public static boolean dispatchUnhandledKeyEventBeforeHierarchy(View view, KeyEvent keyEvent) { if (Build.VERSION.SDK_INT >= 28) { return false; } return UnhandledKeyEventManager.at(view).preDispatch(keyEvent); } public static void enableAccessibleClickableSpanSupport(View view) { getOrCreateAccessibilityDelegateCompat(view); } public static int generateViewId() { return View.generateViewId(); } @Nullable public static AccessibilityDelegateCompat getAccessibilityDelegate(@NonNull View view) { View.AccessibilityDelegate accessibilityDelegateInternal = getAccessibilityDelegateInternal(view); if (accessibilityDelegateInternal == null) { return null; } return accessibilityDelegateInternal instanceof AccessibilityDelegateCompat.AccessibilityDelegateAdapter ? ((AccessibilityDelegateCompat.AccessibilityDelegateAdapter) accessibilityDelegateInternal).mCompat : new AccessibilityDelegateCompat(accessibilityDelegateInternal); } @Nullable private static View.AccessibilityDelegate getAccessibilityDelegateInternal(@NonNull View view) { return Build.VERSION.SDK_INT >= 29 ? view.getAccessibilityDelegate() : getAccessibilityDelegateThroughReflection(view); } @Nullable private static View.AccessibilityDelegate getAccessibilityDelegateThroughReflection(@NonNull View view) { if (sAccessibilityDelegateCheckFailed) { return null; } if (sAccessibilityDelegateField == null) { try { Field declaredField = View.class.getDeclaredField("mAccessibilityDelegate"); sAccessibilityDelegateField = declaredField; declaredField.setAccessible(true); } catch (Throwable unused) { sAccessibilityDelegateCheckFailed = true; return null; } } try { Object obj = sAccessibilityDelegateField.get(view); if (obj instanceof View.AccessibilityDelegate) { return (View.AccessibilityDelegate) obj; } return null; } catch (Throwable unused2) { sAccessibilityDelegateCheckFailed = true; return null; } } public static int getAccessibilityLiveRegion(@NonNull View view) { return view.getAccessibilityLiveRegion(); } public static AccessibilityNodeProviderCompat getAccessibilityNodeProvider(@NonNull View view) { AccessibilityNodeProvider accessibilityNodeProvider = view.getAccessibilityNodeProvider(); if (accessibilityNodeProvider != null) { return new AccessibilityNodeProviderCompat(accessibilityNodeProvider); } return null; } @UiThread public static CharSequence getAccessibilityPaneTitle(View view) { return paneTitleProperty().get(view); } private static List getActionList(View view) { int i = R.id.tag_accessibility_actions; ArrayList arrayList = (ArrayList) view.getTag(i); if (arrayList != null) { return arrayList; } ArrayList arrayList2 = new ArrayList(); view.setTag(i, arrayList2); return arrayList2; } @Deprecated public static float getAlpha(View view) { return view.getAlpha(); } private static int getAvailableActionIdFromResources(View view, @NonNull CharSequence charSequence) { List actionList = getActionList(view); for (int i = 0; i < actionList.size(); i++) { if (TextUtils.equals(charSequence, actionList.get(i).getLabel())) { return actionList.get(i).getId(); } } int i2 = 0; int i3 = -1; while (true) { int[] iArr = ACCESSIBILITY_ACTIONS_RESOURCE_IDS; if (i2 >= iArr.length || i3 != -1) { break; } int i4 = iArr[i2]; boolean z2 = true; for (int i5 = 0; i5 < actionList.size(); i5++) { z2 &= actionList.get(i5).getId() != i4; } if (z2) { i3 = i4; } i2++; } return i3; } public static ColorStateList getBackgroundTintList(@NonNull View view) { return view.getBackgroundTintList(); } public static PorterDuff.Mode getBackgroundTintMode(@NonNull View view) { return view.getBackgroundTintMode(); } @Nullable public static Rect getClipBounds(@NonNull View view) { return view.getClipBounds(); } @Nullable public static Display getDisplay(@NonNull View view) { return view.getDisplay(); } public static float getElevation(@NonNull View view) { return view.getElevation(); } private static Rect getEmptyTempRect() { if (sThreadLocalRect == null) { sThreadLocalRect = new ThreadLocal<>(); } Rect rect = sThreadLocalRect.get(); if (rect == null) { rect = new Rect(); sThreadLocalRect.set(rect); } rect.setEmpty(); return rect; } private static OnReceiveContentViewBehavior getFallback(@NonNull View view) { return view instanceof OnReceiveContentViewBehavior ? (OnReceiveContentViewBehavior) view : NO_OP_ON_RECEIVE_CONTENT_VIEW_BEHAVIOR; } public static boolean getFitsSystemWindows(@NonNull View view) { return view.getFitsSystemWindows(); } public static int getImportantForAccessibility(@NonNull View view) { return view.getImportantForAccessibility(); } @SuppressLint({"InlinedApi"}) public static int getImportantForAutofill(@NonNull View view) { if (Build.VERSION.SDK_INT >= 26) { return view.getImportantForAutofill(); } return 0; } public static int getLabelFor(@NonNull View view) { return view.getLabelFor(); } @Deprecated public static int getLayerType(View view) { return view.getLayerType(); } public static int getLayoutDirection(@NonNull View view) { return view.getLayoutDirection(); } @Nullable @Deprecated public static Matrix getMatrix(View view) { return view.getMatrix(); } @Deprecated public static int getMeasuredHeightAndState(View view) { return view.getMeasuredHeightAndState(); } @Deprecated public static int getMeasuredState(View view) { return view.getMeasuredState(); } @Deprecated public static int getMeasuredWidthAndState(View view) { return view.getMeasuredWidthAndState(); } public static int getMinimumHeight(@NonNull View view) { return view.getMinimumHeight(); } public static int getMinimumWidth(@NonNull View view) { return view.getMinimumWidth(); } public static int getNextClusterForwardId(@NonNull View view) { if (Build.VERSION.SDK_INT >= 26) { return view.getNextClusterForwardId(); } return -1; } @Nullable public static String[] getOnReceiveContentMimeTypes(@NonNull View view) { return (String[]) view.getTag(R.id.tag_on_receive_content_mime_types); } public static AccessibilityDelegateCompat getOrCreateAccessibilityDelegateCompat(@NonNull View view) { AccessibilityDelegateCompat accessibilityDelegate = getAccessibilityDelegate(view); if (accessibilityDelegate == null) { accessibilityDelegate = new AccessibilityDelegateCompat(); } setAccessibilityDelegate(view, accessibilityDelegate); return accessibilityDelegate; } @Deprecated public static int getOverScrollMode(View view) { return view.getOverScrollMode(); } @Px public static int getPaddingEnd(@NonNull View view) { return view.getPaddingEnd(); } @Px public static int getPaddingStart(@NonNull View view) { return view.getPaddingStart(); } public static ViewParent getParentForAccessibility(@NonNull View view) { return view.getParentForAccessibility(); } @Deprecated public static float getPivotX(View view) { return view.getPivotX(); } @Deprecated public static float getPivotY(View view) { return view.getPivotY(); } @Nullable public static WindowInsetsCompat getRootWindowInsets(@NonNull View view) { return Build.VERSION.SDK_INT >= 23 ? Api23Impl.getRootWindowInsets(view) : Api21Impl.getRootWindowInsets(view); } @Deprecated public static float getRotation(View view) { return view.getRotation(); } @Deprecated public static float getRotationX(View view) { return view.getRotationX(); } @Deprecated public static float getRotationY(View view) { return view.getRotationY(); } @Deprecated public static float getScaleX(View view) { return view.getScaleX(); } @Deprecated public static float getScaleY(View view) { return view.getScaleY(); } public static int getScrollIndicators(@NonNull View view) { if (Build.VERSION.SDK_INT >= 23) { return view.getScrollIndicators(); } return 0; } @Nullable @UiThread public static final CharSequence getStateDescription(@NonNull View view) { return stateDescriptionProperty().get(view); } @NonNull public static List getSystemGestureExclusionRects(@NonNull View view) { return Build.VERSION.SDK_INT >= 29 ? view.getSystemGestureExclusionRects() : Collections.emptyList(); } @Nullable public static String getTransitionName(@NonNull View view) { return view.getTransitionName(); } @Deprecated public static float getTranslationX(View view) { return view.getTranslationX(); } @Deprecated public static float getTranslationY(View view) { return view.getTranslationY(); } public static float getTranslationZ(@NonNull View view) { return view.getTranslationZ(); } @Nullable public static WindowInsetsControllerCompat getWindowInsetsController(@NonNull View view) { if (Build.VERSION.SDK_INT >= 30) { return Api30Impl.getWindowInsetsController(view); } for (Context context = view.getContext(); context instanceof ContextWrapper; context = ((ContextWrapper) context).getBaseContext()) { if (context instanceof Activity) { Window window = ((Activity) context).getWindow(); if (window != null) { return WindowCompat.getInsetsController(window, view); } return null; } } return null; } public static int getWindowSystemUiVisibility(@NonNull View view) { return view.getWindowSystemUiVisibility(); } @Deprecated public static float getX(View view) { return view.getX(); } @Deprecated public static float getY(View view) { return view.getY(); } public static float getZ(@NonNull View view) { return view.getZ(); } public static boolean hasAccessibilityDelegate(@NonNull View view) { return getAccessibilityDelegateInternal(view) != null; } public static boolean hasExplicitFocusable(@NonNull View view) { return Build.VERSION.SDK_INT >= 26 ? view.hasExplicitFocusable() : view.hasFocusable(); } public static boolean hasNestedScrollingParent(@NonNull View view) { return view.hasNestedScrollingParent(); } public static boolean hasNestedScrollingParent(@NonNull View view, int i) { if (view instanceof NestedScrollingChild2) { ((NestedScrollingChild2) view).hasNestedScrollingParent(i); return false; } else if (i == 0) { return hasNestedScrollingParent(view); } else { return false; } } public static boolean hasOnClickListeners(@NonNull View view) { return view.hasOnClickListeners(); } public static boolean hasOverlappingRendering(@NonNull View view) { return view.hasOverlappingRendering(); } public static boolean hasTransientState(@NonNull View view) { return view.hasTransientState(); } @UiThread public static boolean isAccessibilityHeading(View view) { Boolean bool = accessibilityHeadingProperty().get(view); if (bool == null) { return false; } return bool.booleanValue(); } public static boolean isAttachedToWindow(@NonNull View view) { return view.isAttachedToWindow(); } public static boolean isFocusedByDefault(@NonNull View view) { if (Build.VERSION.SDK_INT >= 26) { return view.isFocusedByDefault(); } return false; } public static boolean isImportantForAccessibility(@NonNull View view) { return view.isImportantForAccessibility(); } public static boolean isImportantForAutofill(@NonNull View view) { if (Build.VERSION.SDK_INT >= 26) { return view.isImportantForAutofill(); } return true; } public static boolean isInLayout(@NonNull View view) { return view.isInLayout(); } public static boolean isKeyboardNavigationCluster(@NonNull View view) { if (Build.VERSION.SDK_INT >= 26) { return view.isKeyboardNavigationCluster(); } return false; } public static boolean isLaidOut(@NonNull View view) { return view.isLaidOut(); } public static boolean isLayoutDirectionResolved(@NonNull View view) { return view.isLayoutDirectionResolved(); } public static boolean isNestedScrollingEnabled(@NonNull View view) { return view.isNestedScrollingEnabled(); } @Deprecated public static boolean isOpaque(View view) { return view.isOpaque(); } public static boolean isPaddingRelative(@NonNull View view) { return view.isPaddingRelative(); } @UiThread public static boolean isScreenReaderFocusable(View view) { Boolean bool = screenReaderFocusableProperty().get(view); if (bool == null) { return false; } return bool.booleanValue(); } @Deprecated public static void jumpDrawablesToCurrentState(View view) { view.jumpDrawablesToCurrentState(); } public static View keyboardNavigationClusterSearch(@NonNull View view, View view2, int i) { if (Build.VERSION.SDK_INT >= 26) { return view.keyboardNavigationClusterSearch(view2, i); } return null; } @RequiresApi(19) public static void notifyViewAccessibilityStateChangedIfNeeded(View view, int i) { AccessibilityManager accessibilityManager = (AccessibilityManager) view.getContext().getSystemService("accessibility"); if (accessibilityManager.isEnabled()) { boolean z2 = getAccessibilityPaneTitle(view) != null && view.getVisibility() == 0; int i2 = 32; if (getAccessibilityLiveRegion(view) != 0 || z2) { AccessibilityEvent obtain = AccessibilityEvent.obtain(); if (!z2) { i2 = 2048; } obtain.setEventType(i2); obtain.setContentChangeTypes(i); if (z2) { obtain.getText().add(getAccessibilityPaneTitle(view)); setViewImportanceForAccessibilityIfNeeded(view); } view.sendAccessibilityEventUnchecked(obtain); } else if (i == 32) { AccessibilityEvent obtain2 = AccessibilityEvent.obtain(); view.onInitializeAccessibilityEvent(obtain2); obtain2.setEventType(32); obtain2.setContentChangeTypes(i); obtain2.setSource(view); view.onPopulateAccessibilityEvent(obtain2); obtain2.getText().add(getAccessibilityPaneTitle(view)); accessibilityManager.sendAccessibilityEvent(obtain2); } else if (view.getParent() != null) { try { view.getParent().notifySubtreeAccessibilityStateChanged(view, view, i); } catch (AbstractMethodError e) { Log.e(TAG, view.getParent().getClass().getSimpleName() + " does not fully implement ViewParent", e); } } } } public static void offsetLeftAndRight(@NonNull View view, int i) { if (Build.VERSION.SDK_INT >= 23) { view.offsetLeftAndRight(i); return; } Rect emptyTempRect = getEmptyTempRect(); boolean z2 = false; ViewParent parent = view.getParent(); if (parent instanceof View) { View view2 = (View) parent; emptyTempRect.set(view2.getLeft(), view2.getTop(), view2.getRight(), view2.getBottom()); z2 = !emptyTempRect.intersects(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); } compatOffsetLeftAndRight(view, i); if (z2 && emptyTempRect.intersect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())) { ((View) parent).invalidate(emptyTempRect); } } public static void offsetTopAndBottom(@NonNull View view, int i) { if (Build.VERSION.SDK_INT >= 23) { view.offsetTopAndBottom(i); return; } Rect emptyTempRect = getEmptyTempRect(); boolean z2 = false; ViewParent parent = view.getParent(); if (parent instanceof View) { View view2 = (View) parent; emptyTempRect.set(view2.getLeft(), view2.getTop(), view2.getRight(), view2.getBottom()); z2 = !emptyTempRect.intersects(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); } compatOffsetTopAndBottom(view, i); if (z2 && emptyTempRect.intersect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())) { ((View) parent).invalidate(emptyTempRect); } } @NonNull public static WindowInsetsCompat onApplyWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat) { WindowInsets windowInsets = windowInsetsCompat.toWindowInsets(); if (windowInsets != null) { WindowInsets onApplyWindowInsets = view.onApplyWindowInsets(windowInsets); if (!onApplyWindowInsets.equals(windowInsets)) { return WindowInsetsCompat.toWindowInsetsCompat(onApplyWindowInsets, view); } } return windowInsetsCompat; } @Deprecated public static void onInitializeAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) { view.onInitializeAccessibilityEvent(accessibilityEvent); } public static void onInitializeAccessibilityNodeInfo(@NonNull View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) { view.onInitializeAccessibilityNodeInfo(accessibilityNodeInfoCompat.unwrap()); } @Deprecated public static void onPopulateAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) { view.onPopulateAccessibilityEvent(accessibilityEvent); } private static AccessibilityViewProperty paneTitleProperty() { return new AnonymousClass3(R.id.tag_accessibility_pane_title, CharSequence.class, 8, 28); } public static boolean performAccessibilityAction(@NonNull View view, int i, Bundle bundle) { return view.performAccessibilityAction(i, bundle); } @Nullable public static ContentInfoCompat performReceiveContent(@NonNull View view, @NonNull ContentInfoCompat contentInfoCompat) { if (Log.isLoggable(TAG, 3)) { Log.d(TAG, "performReceiveContent: " + contentInfoCompat + ", view=" + view.getClass().getSimpleName() + "[" + view.getId() + "]"); } OnReceiveContentListener onReceiveContentListener = (OnReceiveContentListener) view.getTag(R.id.tag_on_receive_content_listener); if (onReceiveContentListener == null) { return getFallback(view).onReceiveContent(contentInfoCompat); } ContentInfoCompat onReceiveContent = onReceiveContentListener.onReceiveContent(view, contentInfoCompat); if (onReceiveContent == null) { return null; } return getFallback(view).onReceiveContent(onReceiveContent); } public static void postInvalidateOnAnimation(@NonNull View view) { view.postInvalidateOnAnimation(); } public static void postInvalidateOnAnimation(@NonNull View view, int i, int i2, int i3, int i4) { view.postInvalidateOnAnimation(i, i2, i3, i4); } public static void postOnAnimation(@NonNull View view, Runnable runnable) { view.postOnAnimation(runnable); } public static void postOnAnimationDelayed(@NonNull View view, Runnable runnable, long j) { view.postOnAnimationDelayed(runnable, j); } public static void removeAccessibilityAction(@NonNull View view, int i) { removeActionWithId(i, view); notifyViewAccessibilityStateChangedIfNeeded(view, 0); } private static void removeActionWithId(int i, View view) { List actionList = getActionList(view); for (int i2 = 0; i2 < actionList.size(); i2++) { if (actionList.get(i2).getId() == i) { actionList.remove(i2); return; } } } public static void removeOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) { if (Build.VERSION.SDK_INT >= 28) { CompatImplApi28.removeOnUnhandledKeyEventListener(view, onUnhandledKeyEventListenerCompat); return; } ArrayList arrayList = (ArrayList) view.getTag(R.id.tag_unhandled_key_listeners); if (arrayList != null) { arrayList.remove(onUnhandledKeyEventListenerCompat); if (arrayList.size() == 0) { UnhandledKeyEventManager.unregisterListeningView(view); } } } public static void replaceAccessibilityAction(@NonNull View view, @NonNull AccessibilityNodeInfoCompat.AccessibilityActionCompat accessibilityActionCompat, @Nullable CharSequence charSequence, @Nullable AccessibilityViewCommand accessibilityViewCommand) { if (accessibilityViewCommand == null && charSequence == null) { removeAccessibilityAction(view, accessibilityActionCompat.getId()); } else { addAccessibilityAction(view, accessibilityActionCompat.createReplacementAction(charSequence, accessibilityViewCommand)); } } public static void requestApplyInsets(@NonNull View view) { view.requestApplyInsets(); } @NonNull public static T requireViewById(@NonNull View view, @IdRes int i) { if (Build.VERSION.SDK_INT >= 28) { return (T) view.requireViewById(i); } T t = (T) view.findViewById(i); if (t != null) { return t; } throw new IllegalArgumentException("ID does not reference a View inside this View"); } @Deprecated public static int resolveSizeAndState(int i, int i2, int i3) { return View.resolveSizeAndState(i, i2, i3); } public static boolean restoreDefaultFocus(@NonNull View view) { return Build.VERSION.SDK_INT >= 26 ? view.restoreDefaultFocus() : view.requestFocus(); } public static void saveAttributeDataForStyleable(@NonNull View view, @NonNull @SuppressLint({"ContextFirst"}) Context context, @NonNull int[] iArr, @Nullable AttributeSet attributeSet, @NonNull TypedArray typedArray, int i, int i2) { if (Build.VERSION.SDK_INT >= 29) { Api29Impl.saveAttributeDataForStyleable(view, context, iArr, attributeSet, typedArray, i, i2); } } private static AccessibilityViewProperty screenReaderFocusableProperty() { return new AnonymousClass2(R.id.tag_screen_reader_focusable, Boolean.class, 28); } public static void setAccessibilityDelegate(@NonNull View view, AccessibilityDelegateCompat accessibilityDelegateCompat) { if (accessibilityDelegateCompat == null && (getAccessibilityDelegateInternal(view) instanceof AccessibilityDelegateCompat.AccessibilityDelegateAdapter)) { accessibilityDelegateCompat = new AccessibilityDelegateCompat(); } view.setAccessibilityDelegate(accessibilityDelegateCompat == null ? null : accessibilityDelegateCompat.getBridge()); } @UiThread public static void setAccessibilityHeading(View view, boolean z2) { accessibilityHeadingProperty().set(view, Boolean.valueOf(z2)); } public static void setAccessibilityLiveRegion(@NonNull View view, int i) { view.setAccessibilityLiveRegion(i); } @UiThread public static void setAccessibilityPaneTitle(View view, CharSequence charSequence) { paneTitleProperty().set(view, charSequence); if (charSequence != null) { sAccessibilityPaneVisibilityManager.addAccessibilityPane(view); } else { sAccessibilityPaneVisibilityManager.removeAccessibilityPane(view); } } @Deprecated public static void setActivated(View view, boolean z2) { view.setActivated(z2); } @Deprecated public static void setAlpha(View view, @FloatRange(from = 0.0d, to = 1.0d) float f) { view.setAlpha(f); } public static void setAutofillHints(@NonNull View view, @Nullable String... strArr) { if (Build.VERSION.SDK_INT >= 26) { view.setAutofillHints(strArr); } } public static void setBackground(@NonNull View view, @Nullable Drawable drawable) { view.setBackground(drawable); } public static void setBackgroundTintList(@NonNull View view, ColorStateList colorStateList) { int i = Build.VERSION.SDK_INT; view.setBackgroundTintList(colorStateList); if (i == 21) { Drawable background = view.getBackground(); boolean z2 = (view.getBackgroundTintList() == null && view.getBackgroundTintMode() == null) ? false : true; if (background != null && z2) { if (background.isStateful()) { background.setState(view.getDrawableState()); } view.setBackground(background); } } } public static void setBackgroundTintMode(@NonNull View view, PorterDuff.Mode mode) { int i = Build.VERSION.SDK_INT; view.setBackgroundTintMode(mode); if (i == 21) { Drawable background = view.getBackground(); boolean z2 = (view.getBackgroundTintList() == null && view.getBackgroundTintMode() == null) ? false : true; if (background != null && z2) { if (background.isStateful()) { background.setState(view.getDrawableState()); } view.setBackground(background); } } } @Deprecated public static void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean z2) { if (sChildrenDrawingOrderMethod == null) { try { sChildrenDrawingOrderMethod = ViewGroup.class.getDeclaredMethod("setChildrenDrawingOrderEnabled", Boolean.TYPE); } catch (NoSuchMethodException e) { Log.e(TAG, "Unable to find childrenDrawingOrderEnabled", e); } sChildrenDrawingOrderMethod.setAccessible(true); } try { sChildrenDrawingOrderMethod.invoke(viewGroup, Boolean.valueOf(z2)); } catch (IllegalAccessException e2) { Log.e(TAG, "Unable to invoke childrenDrawingOrderEnabled", e2); } catch (IllegalArgumentException e3) { Log.e(TAG, "Unable to invoke childrenDrawingOrderEnabled", e3); } catch (InvocationTargetException e4) { Log.e(TAG, "Unable to invoke childrenDrawingOrderEnabled", e4); } } public static void setClipBounds(@NonNull View view, Rect rect) { view.setClipBounds(rect); } public static void setElevation(@NonNull View view, float f) { view.setElevation(f); } @Deprecated public static void setFitsSystemWindows(View view, boolean z2) { view.setFitsSystemWindows(z2); } public static void setFocusedByDefault(@NonNull View view, boolean z2) { if (Build.VERSION.SDK_INT >= 26) { view.setFocusedByDefault(z2); } } public static void setHasTransientState(@NonNull View view, boolean z2) { view.setHasTransientState(z2); } public static void setImportantForAccessibility(@NonNull View view, int i) { view.setImportantForAccessibility(i); } public static void setImportantForAutofill(@NonNull View view, int i) { if (Build.VERSION.SDK_INT >= 26) { view.setImportantForAutofill(i); } } public static void setKeyboardNavigationCluster(@NonNull View view, boolean z2) { if (Build.VERSION.SDK_INT >= 26) { view.setKeyboardNavigationCluster(z2); } } public static void setLabelFor(@NonNull View view, @IdRes int i) { view.setLabelFor(i); } public static void setLayerPaint(@NonNull View view, Paint paint) { view.setLayerPaint(paint); } @Deprecated public static void setLayerType(View view, int i, Paint paint) { view.setLayerType(i, paint); } public static void setLayoutDirection(@NonNull View view, int i) { view.setLayoutDirection(i); } public static void setNestedScrollingEnabled(@NonNull View view, boolean z2) { view.setNestedScrollingEnabled(z2); } public static void setNextClusterForwardId(@NonNull View view, int i) { if (Build.VERSION.SDK_INT >= 26) { view.setNextClusterForwardId(i); } } public static void setOnApplyWindowInsetsListener(@NonNull View view, @Nullable OnApplyWindowInsetsListener onApplyWindowInsetsListener) { Api21Impl.setOnApplyWindowInsetsListener(view, onApplyWindowInsetsListener); } public static void setOnReceiveContentListener(@NonNull View view, @Nullable String[] strArr, @Nullable OnReceiveContentListener onReceiveContentListener) { if (strArr == null || strArr.length == 0) { strArr = null; } boolean z2 = false; if (onReceiveContentListener != null) { Preconditions.checkArgument(strArr != null, "When the listener is set, MIME types must also be set"); } if (strArr != null) { int length = strArr.length; int i = 0; while (true) { if (i >= length) { break; } else if (strArr[i].startsWith("*")) { z2 = true; break; } else { i++; } } StringBuilder S = a.S("A MIME type set here must not start with *: "); S.append(Arrays.toString(strArr)); Preconditions.checkArgument(!z2, S.toString()); } view.setTag(R.id.tag_on_receive_content_mime_types, strArr); view.setTag(R.id.tag_on_receive_content_listener, onReceiveContentListener); } @Deprecated public static void setOverScrollMode(View view, int i) { view.setOverScrollMode(i); } public static void setPaddingRelative(@NonNull View view, @Px int i, @Px int i2, @Px int i3, @Px int i4) { view.setPaddingRelative(i, i2, i3, i4); } @Deprecated public static void setPivotX(View view, float f) { view.setPivotX(f); } @Deprecated public static void setPivotY(View view, float f) { view.setPivotY(f); } public static void setPointerIcon(@NonNull View view, PointerIconCompat pointerIconCompat) { if (Build.VERSION.SDK_INT >= 24) { view.setPointerIcon((PointerIcon) (pointerIconCompat != null ? pointerIconCompat.getPointerIcon() : null)); } } @Deprecated public static void setRotation(View view, float f) { view.setRotation(f); } @Deprecated public static void setRotationX(View view, float f) { view.setRotationX(f); } @Deprecated public static void setRotationY(View view, float f) { view.setRotationY(f); } @Deprecated public static void setSaveFromParentEnabled(View view, boolean z2) { view.setSaveFromParentEnabled(z2); } @Deprecated public static void setScaleX(View view, float f) { view.setScaleX(f); } @Deprecated public static void setScaleY(View view, float f) { view.setScaleY(f); } @UiThread public static void setScreenReaderFocusable(View view, boolean z2) { screenReaderFocusableProperty().set(view, Boolean.valueOf(z2)); } public static void setScrollIndicators(@NonNull View view, int i) { if (Build.VERSION.SDK_INT >= 23) { view.setScrollIndicators(i); } } public static void setScrollIndicators(@NonNull View view, int i, int i2) { if (Build.VERSION.SDK_INT >= 23) { view.setScrollIndicators(i, i2); } } @UiThread public static void setStateDescription(@NonNull View view, @Nullable CharSequence charSequence) { stateDescriptionProperty().set(view, charSequence); } public static void setSystemGestureExclusionRects(@NonNull View view, @NonNull List list) { if (Build.VERSION.SDK_INT >= 29) { view.setSystemGestureExclusionRects(list); } } public static void setTooltipText(@NonNull View view, @Nullable CharSequence charSequence) { if (Build.VERSION.SDK_INT >= 26) { view.setTooltipText(charSequence); } } public static void setTransitionName(@NonNull View view, String str) { view.setTransitionName(str); } @Deprecated public static void setTranslationX(View view, float f) { view.setTranslationX(f); } @Deprecated public static void setTranslationY(View view, float f) { view.setTranslationY(f); } public static void setTranslationZ(@NonNull View view, float f) { view.setTranslationZ(f); } private static void setViewImportanceForAccessibilityIfNeeded(View view) { if (getImportantForAccessibility(view) == 0) { setImportantForAccessibility(view, 1); } for (ViewParent parent = view.getParent(); parent instanceof View; parent = parent.getParent()) { if (getImportantForAccessibility((View) parent) == 4) { setImportantForAccessibility(view, 2); return; } } } public static void setWindowInsetsAnimationCallback(@NonNull View view, @Nullable WindowInsetsAnimationCompat.Callback callback) { WindowInsetsAnimationCompat.setCallback(view, callback); } @Deprecated public static void setX(View view, float f) { view.setX(f); } @Deprecated public static void setY(View view, float f) { view.setY(f); } public static void setZ(@NonNull View view, float f) { view.setZ(f); } public static boolean startDragAndDrop(@NonNull View view, ClipData clipData, View.DragShadowBuilder dragShadowBuilder, Object obj, int i) { return Build.VERSION.SDK_INT >= 24 ? view.startDragAndDrop(clipData, dragShadowBuilder, obj, i) : view.startDrag(clipData, dragShadowBuilder, obj, i); } public static boolean startNestedScroll(@NonNull View view, int i) { return view.startNestedScroll(i); } public static boolean startNestedScroll(@NonNull View view, int i, int i2) { if (view instanceof NestedScrollingChild2) { return ((NestedScrollingChild2) view).startNestedScroll(i, i2); } if (i2 == 0) { return startNestedScroll(view, i); } return false; } private static AccessibilityViewProperty stateDescriptionProperty() { return new AnonymousClass4(R.id.tag_state_description, CharSequence.class, 64, 30); } public static void stopNestedScroll(@NonNull View view) { view.stopNestedScroll(); } public static void stopNestedScroll(@NonNull View view, int i) { if (view instanceof NestedScrollingChild2) { ((NestedScrollingChild2) view).stopNestedScroll(i); } else if (i == 0) { stopNestedScroll(view); } } private static void tickleInvalidationFlag(View view) { float translationY = view.getTranslationY(); view.setTranslationY(1.0f + translationY); view.setTranslationY(translationY); } public static void updateDragShadow(@NonNull View view, View.DragShadowBuilder dragShadowBuilder) { if (Build.VERSION.SDK_INT >= 24) { view.updateDragShadow(dragShadowBuilder); } } }