package com.azoft.carousellayoutmanager;
import android.graphics.PointF;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
/**
* Custom implementation of {@link android.support.v7.widget.RecyclerView.SmoothScroller} that can work only with {@link CarouselLayoutManager}.
*
* @see CarouselLayoutManager
*/
public class CarouselSmoothScroller {
public CarouselSmoothScroller(@NonNull final RecyclerView.State state, final int position) {
if (0 > position) {
throw new IllegalArgumentException("position can't be less then 0. position is : " + position);
}
if (position >= state.getItemCount()) {
throw new IllegalArgumentException("position can't be great then adapter items count. position is : " + position);
}
}
public PointF computeScrollVectorForPosition(final int targetPosition, @NonNull final CarouselLayoutManager carouselLayoutManager) {
return carouselLayoutManager.computeScrollVectorForPosition(targetPosition);
}
public int calculateDyToMakeVisible(final View view, @NonNull final CarouselLayoutManager carouselLayoutManager) {
if (!carouselLayoutManager.canScrollVertically()) {
return 0;
}
return carouselLayoutManager.getOffsetForCurrentView(view);
}
public int calculateDxToMakeVisible(final View view, @NonNull final CarouselLayoutManager carouselLayoutManager) {
if (!carouselLayoutManager.canScrollHorizontally()) {
return 0;
}
return carouselLayoutManager.getOffsetForCurrentView(view);
}
}