Source code
package android.support.v4.view;
import android.os.Build.VERSION;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
public class ViewGroupCompat {
static final ViewGroupCompatImpl IMPL;
public static final int LAYOUT_MODE_CLIP_BOUNDS = 0;
public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1;
interface ViewGroupCompatImpl {
int getLayoutMode(ViewGroup viewGroup);
int getNestedScrollAxes(ViewGroup viewGroup);
boolean isTransitionGroup(ViewGroup viewGroup);
boolean onRequestSendAccessibilityEvent(ViewGroup viewGroup, View view, AccessibilityEvent accessibilityEvent);
void setLayoutMode(ViewGroup viewGroup, int i);
void setMotionEventSplittingEnabled(ViewGroup viewGroup, boolean z);
void setTransitionGroup(ViewGroup viewGroup, boolean z);
}
static class ViewGroupCompatStubImpl implements ViewGroupCompatImpl {
ViewGroupCompatStubImpl() {
}
public boolean onRequestSendAccessibilityEvent(ViewGroup group, View child, AccessibilityEvent event) {
return true;
}
public void setMotionEventSplittingEnabled(ViewGroup group, boolean split) {
}
public int getLayoutMode(ViewGroup group) {
return 0;
}
public void setLayoutMode(ViewGroup group, int mode) {
}
public void setTransitionGroup(ViewGroup group, boolean isTransitionGroup) {
}
public boolean isTransitionGroup(ViewGroup group) {
return false;
}
public int getNestedScrollAxes(ViewGroup group) {
if (group instanceof NestedScrollingParent) {
return ((NestedScrollingParent) group).getNestedScrollAxes();
}
return 0;
}
}
static class ViewGroupCompatHCImpl extends ViewGroupCompatStubImpl {
ViewGroupCompatHCImpl() {
}
public void setMotionEventSplittingEnabled(ViewGroup group, boolean split) {
ViewGroupCompatHC.setMotionEventSplittingEnabled(group, split);
}
}
static class ViewGroupCompatIcsImpl extends ViewGroupCompatHCImpl {
ViewGroupCompatIcsImpl() {
}
public boolean onRequestSendAccessibilityEvent(ViewGroup group, View child, AccessibilityEvent event) {
return ViewGroupCompatIcs.onRequestSendAccessibilityEvent(group, child, event);
}
}
static class ViewGroupCompatJellybeanMR2Impl extends ViewGroupCompatIcsImpl {
ViewGroupCompatJellybeanMR2Impl() {
}
public int getLayoutMode(ViewGroup group) {
return ViewGroupCompatJellybeanMR2.getLayoutMode(group);
}
public void setLayoutMode(ViewGroup group, int mode) {
ViewGroupCompatJellybeanMR2.setLayoutMode(group, mode);
}
}
static class ViewGroupCompatLollipopImpl extends ViewGroupCompatJellybeanMR2Impl {
ViewGroupCompatLollipopImpl() {
}
public void setTransitionGroup(ViewGroup group, boolean isTransitionGroup) {
ViewGroupCompatLollipop.setTransitionGroup(group, isTransitionGroup);
}
public boolean isTransitionGroup(ViewGroup group) {
return ViewGroupCompatLollipop.isTransitionGroup(group);
}
public int getNestedScrollAxes(ViewGroup group) {
return ViewGroupCompatLollipop.getNestedScrollAxes(group);
}
}
static {
int version = VERSION.SDK_INT;
if (version >= 21) {
IMPL = new ViewGroupCompatLollipopImpl();
} else if (version >= 18) {
IMPL = new ViewGroupCompatJellybeanMR2Impl();
} else if (version >= 14) {
IMPL = new ViewGroupCompatIcsImpl();
} else if (version >= 11) {
IMPL = new ViewGroupCompatHCImpl();
} else {
IMPL = new ViewGroupCompatStubImpl();
}
}
private ViewGroupCompat() {
}
public static boolean onRequestSendAccessibilityEvent(ViewGroup group, View child, AccessibilityEvent event) {
return IMPL.onRequestSendAccessibilityEvent(group, child, event);
}
public static void setMotionEventSplittingEnabled(ViewGroup group, boolean split) {
IMPL.setMotionEventSplittingEnabled(group, split);
}
public static int getLayoutMode(ViewGroup group) {
return IMPL.getLayoutMode(group);
}
public static void setLayoutMode(ViewGroup group, int mode) {
IMPL.setLayoutMode(group, mode);
}
public static void setTransitionGroup(ViewGroup group, boolean isTransitionGroup) {
IMPL.setTransitionGroup(group, isTransitionGroup);
}
public static boolean isTransitionGroup(ViewGroup group) {
return IMPL.isTransitionGroup(group);
}
public static int getNestedScrollAxes(ViewGroup group) {
return IMPL.getNestedScrollAxes(group);
}
}