146 lines
5.9 KiB
Java
146 lines
5.9 KiB
Java
package androidx.core.view;
|
|
|
|
import android.util.Log;
|
|
import android.view.View;
|
|
import android.view.ViewParent;
|
|
import android.view.accessibility.AccessibilityEvent;
|
|
import androidx.annotation.NonNull;
|
|
public final class ViewParentCompat {
|
|
private static final String TAG = "ViewParentCompat";
|
|
private static int[] sTempNestedScrollConsumed;
|
|
|
|
private ViewParentCompat() {
|
|
}
|
|
|
|
private static int[] getTempNestedScrollConsumed() {
|
|
int[] iArr = sTempNestedScrollConsumed;
|
|
if (iArr == null) {
|
|
sTempNestedScrollConsumed = new int[2];
|
|
} else {
|
|
iArr[0] = 0;
|
|
iArr[1] = 0;
|
|
}
|
|
return sTempNestedScrollConsumed;
|
|
}
|
|
|
|
public static void notifySubtreeAccessibilityStateChanged(ViewParent viewParent, View view, View view2, int i) {
|
|
viewParent.notifySubtreeAccessibilityStateChanged(view, view2, i);
|
|
}
|
|
|
|
public static boolean onNestedFling(ViewParent viewParent, View view, float f, float f2, boolean z2) {
|
|
try {
|
|
return viewParent.onNestedFling(view, f, f2, z2);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onNestedFling", e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static boolean onNestedPreFling(ViewParent viewParent, View view, float f, float f2) {
|
|
try {
|
|
return viewParent.onNestedPreFling(view, f, f2);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onNestedPreFling", e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static void onNestedPreScroll(ViewParent viewParent, View view, int i, int i2, int[] iArr) {
|
|
onNestedPreScroll(viewParent, view, i, i2, iArr, 0);
|
|
}
|
|
|
|
public static void onNestedPreScroll(ViewParent viewParent, View view, int i, int i2, int[] iArr, int i3) {
|
|
if (viewParent instanceof NestedScrollingParent2) {
|
|
((NestedScrollingParent2) viewParent).onNestedPreScroll(view, i, i2, iArr, i3);
|
|
} else if (i3 == 0) {
|
|
try {
|
|
viewParent.onNestedPreScroll(view, i, i2, iArr);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onNestedPreScroll", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void onNestedScroll(ViewParent viewParent, View view, int i, int i2, int i3, int i4) {
|
|
onNestedScroll(viewParent, view, i, i2, i3, i4, 0, getTempNestedScrollConsumed());
|
|
}
|
|
|
|
public static void onNestedScroll(ViewParent viewParent, View view, int i, int i2, int i3, int i4, int i5) {
|
|
onNestedScroll(viewParent, view, i, i2, i3, i4, i5, getTempNestedScrollConsumed());
|
|
}
|
|
|
|
public static void onNestedScroll(ViewParent viewParent, View view, int i, int i2, int i3, int i4, int i5, @NonNull int[] iArr) {
|
|
if (viewParent instanceof NestedScrollingParent3) {
|
|
((NestedScrollingParent3) viewParent).onNestedScroll(view, i, i2, i3, i4, i5, iArr);
|
|
return;
|
|
}
|
|
iArr[0] = iArr[0] + i3;
|
|
iArr[1] = iArr[1] + i4;
|
|
if (viewParent instanceof NestedScrollingParent2) {
|
|
((NestedScrollingParent2) viewParent).onNestedScroll(view, i, i2, i3, i4, i5);
|
|
} else if (i5 == 0) {
|
|
try {
|
|
viewParent.onNestedScroll(view, i, i2, i3, i4);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onNestedScroll", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void onNestedScrollAccepted(ViewParent viewParent, View view, View view2, int i) {
|
|
onNestedScrollAccepted(viewParent, view, view2, i, 0);
|
|
}
|
|
|
|
public static void onNestedScrollAccepted(ViewParent viewParent, View view, View view2, int i, int i2) {
|
|
if (viewParent instanceof NestedScrollingParent2) {
|
|
((NestedScrollingParent2) viewParent).onNestedScrollAccepted(view, view2, i, i2);
|
|
} else if (i2 == 0) {
|
|
try {
|
|
viewParent.onNestedScrollAccepted(view, view2, i);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onNestedScrollAccepted", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static boolean onStartNestedScroll(ViewParent viewParent, View view, View view2, int i) {
|
|
return onStartNestedScroll(viewParent, view, view2, i, 0);
|
|
}
|
|
|
|
public static boolean onStartNestedScroll(ViewParent viewParent, View view, View view2, int i, int i2) {
|
|
if (viewParent instanceof NestedScrollingParent2) {
|
|
return ((NestedScrollingParent2) viewParent).onStartNestedScroll(view, view2, i, i2);
|
|
}
|
|
if (i2 != 0) {
|
|
return false;
|
|
}
|
|
try {
|
|
return viewParent.onStartNestedScroll(view, view2, i);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onStartNestedScroll", e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static void onStopNestedScroll(ViewParent viewParent, View view) {
|
|
onStopNestedScroll(viewParent, view, 0);
|
|
}
|
|
|
|
public static void onStopNestedScroll(ViewParent viewParent, View view, int i) {
|
|
if (viewParent instanceof NestedScrollingParent2) {
|
|
((NestedScrollingParent2) viewParent).onStopNestedScroll(view, i);
|
|
} else if (i == 0) {
|
|
try {
|
|
viewParent.onStopNestedScroll(view);
|
|
} catch (AbstractMethodError e) {
|
|
Log.e(TAG, "ViewParent " + viewParent + " does not implement interface method onStopNestedScroll", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Deprecated
|
|
public static boolean requestSendAccessibilityEvent(ViewParent viewParent, View view, AccessibilityEvent accessibilityEvent) {
|
|
return viewParent.requestSendAccessibilityEvent(view, accessibilityEvent);
|
|
}
|
|
}
|