private boolean checkTouchSlop(View child, float dx, float dy) {
        if (child == null) {
            return false;
        }
        final boolean checkHorizontal = mCallback.getViewHorizontalDragRange(child) > 0;
        final boolean checkVertical = mCallback.getViewVerticalDragRange(child) > 0;

        if (checkHorizontal && checkVertical) {
            return dx * dx + dy * dy > mTouchSlop * mTouchSlop;
        } else if (checkHorizontal) {
            return Math.abs(dx) > mTouchSlop;
        } else if (checkVertical) {
            return Math.abs(dy) > mTouchSlop;
        }
        return false;
    }
Check if we've crossed a reasonable touch slop for the given child view.
If the child cannot be dragged along the horizontal or vertical axis, motion
along that axis will not count toward the slop check.

@param child Child to check
@param dx Motion since initial position along X axis
@param dy Motion since initial position along Y axis
@return true if the touch slop has been crossed
app/src/main/java/home/smart/fly/animations/widget/slidepanel/ViewDragHelper.java