protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
        if (v instanceof ViewGroup) {
            final ViewGroup group = (ViewGroup) v;
            final int scrollX = v.getScrollX();
            final int scrollY = v.getScrollY();
            final int count = group.getChildCount();
            // Count backwards - let topmost views consume scroll distance first.
            for (int i = count - 1; i >= 0; i--) {
                final View child = group.getChildAt(i);
                if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
                        y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
                        canScroll(child, true, dx, x + scrollX - child.getLeft(),
                                y + scrollY - child.getTop())) {
                    return true;
                }
            }
        }
        return checkV && ViewCompat.canScrollHorizontally(v, -dx);
    }
Tests scrollability within child views of v given a delta of dx.

@param v      View to test for horizontal scrollability
@param checkV Whether the view v passed should itself be checked for scrollability (true),
              or just its children (false).
@param dx     Delta scrolled in pixels
@param x      X coordinate of the active touch point
@param y      Y coordinate of the active touch point
@return true if child views of v can be scrolled by delta of dx.
app/src/main/java/home/smart/fly/animations/widget/slidepanel/SlidingUpPanelLayout.java