@Override
 public int getRedrawOffset(
     final ScrollDirectionManager scrollDirectionManager,
     final View incomingView,
     final View outgoingView) {
   final int outgoingViewStart = scrollDirectionManager.getViewStart(outgoingView);
   return outgoingViewStart;
 }
  @Override
  public int getSnapToPixelDistance(
      LayoutManager<Cell> layoutManager,
      ScrollDirectionManager scrollDirectionManager,
      int size,
      View view) {
    final int startSizePadding = layoutManager.getStartSizePadding();
    final int endSizePadding = layoutManager.getEndSizePadding();
    final int startPixel = scrollDirectionManager.getViewStart(view);
    final int endPixel = scrollDirectionManager.getViewEnd(view);
    final int viewSize = endPixel - startPixel;

    final int actualSize = size - startSizePadding - endSizePadding;
    final boolean viewIsLargerThanViewGroup = actualSize <= viewSize;
    if (startPixel < startSizePadding || viewIsLargerThanViewGroup) {
      return -startPixel + startSizePadding;
    } else if (endPixel > startSizePadding + size) {
      return startSizePadding + size - endPixel;
    }

    return 0;
  }