【发布时间】:2018-10-24 08:51:21
【问题描述】:
有这样的问题,我有水平的RecyclerView,其中每个单元格都小于屏幕的宽度。
所以我在这里找到了解决方案
RecyclerVIew auto scroll to display all the elements as in News Feed etc.,
如果一个单元格占据屏幕的整个宽度,则所有工作都很好,否则(如果每个单元格占据屏幕宽度的 95%)每次自动滑动将单元格放在屏幕的初学者(右侧),这是合乎逻辑的。所以在一个可见单元格的末尾是另一个单元格的开始
看起来不太好。我需要这个单元格像这样位于屏幕的中间。
我需要查看上一个单元格 - 当前单元格 - 下一个单元格
现在我想解释一些我如何制作当前平滑滚动的魔法(正如我在上面的链接中提到的)
这个方法在我的CustomLinnearLayoutManager
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position)
{
LinearSmoothScroller linearSmoothScroller = new LinearSmoothScroller(recyclerView.getContext())
{
@Override
public PointF computeScrollVectorForPosition(int targetPosition)
{
return SmoothLayoutManager.this.computeScrollVectorForPosition(targetPosition);
}
@Override
protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics)
{
return MILLISECONDS_PER_INCH / displayMetrics.densityDpi;
}
};
linearSmoothScroller.setTargetPosition(position);
startSmoothScroll(linearSmoothScroller);
}
但是这个方法可以不用偏移量
我发现了另一种可以提供所需偏移量的方法
scrollToPositionWithOffset(final int position, final int offset)
它看起来正是我所需要的,但这种方法没有流畅的动画效果。
所以,最终我的问题是:如何将动画逻辑从第一种方法应用到第二种方法(带有偏移)
欢迎提问
【问题讨论】:
标签: java android android-recyclerview