@Override
        public void onViewDragStateChanged(int state) {
            if (mDragHelper != null && mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE) {
                mSlideOffset = computeSlideOffset(mSlideableView.getTop());
                applyParallaxForCurrentSlideOffset();

                if (mSlideOffset == 1) {
                    updateObscuredViewVisibility();
                    setPanelStateInternal(PanelState.EXPANDED);
                } else if (mSlideOffset == 0) {
                    setPanelStateInternal(PanelState.COLLAPSED);
                } else if (mSlideOffset < 0) {
                    setPanelStateInternal(PanelState.HIDDEN);
                    mSlideableView.setVisibility(View.INVISIBLE);
                } else {
                    updateObscuredViewVisibility();
                    setPanelStateInternal(PanelState.ANCHORED);
                }
            }
        }
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