如何根据它们在屏幕上的位置为水平RecyclerView中的项目提供垂直偏移?当用户向左或向右滚动时,我希望物体在接近中间时上升,在接近屏幕的两端或侧面时降低。
这是我想要的效果的图片。蓝色表示向左和向右滚动。红色表示每个项目的垂直偏移量,具体取决于它们在屏幕上的位置。当用户向左或向右滚动时,我希望他们根据位置平稳地上升和下降。
答案 0 :(得分:1)
您必须创建自定义ItemDecoration
,它看起来像这样:
public class MyItemDecoration extends RecyclerView.ItemDecoration {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
final int childCount = parent.getAdapter().getItemCount();
final int center = childCount >> 1;
final int currentPosition = parent.getChildAdapterPosition(view);
if (currentPosition < center) {
outRect.set(0, 0, 0, currentPosition * 10);
} else {
outRect.set(0, 0, 0, (childCount - currentPosition) * 10);
}
}
}
<强>用法强>:
recyclerView.addItemDecoration(new MyItemDecoration());
结果: