Circular RecyclerView - 在滚动条上旋转和平移列表项

Circular RecyclerView - Rotate and Translate list items on scroll

在滚动时,我想旋转和平移这些列表项,使它们仍然以循环方式存在。我制作了一个自定义视图,并使用这种旋转和平移来覆盖这些方法 Here。但是旋转有点奇怪而且不是圆形的。 这就是我想要实现的

@Override
protected void dispatchDraw(Canvas canvas) {
    canvas.save();
    int top = getTop();

    float rotate = calculateAngle(top, recyclerViewHeight);
    Matrix m = canvas.getMatrix();
    m.preTranslate(-2 / getWidth(), -2 / getHeight());
    m.postRotate(rotate);
    m.postTranslate(2 / getWidth(), 2 / getHeight());
    canvas.concat(m);
    super.dispatchDraw(canvas);
    canvas.restore();

}

private float calculateAngle(int top, float height) {
    float result = 0f;
    float fullAngleFactor= 60f;
    if (top < height / 2f) {
        result = (top - (height / 2f)) / (height / 2f) * fullAngleFactor;
    } else if (top > height / 2f) {
        result = (top - (height / 2f)) / (height / 2f) * fullAngleFactor;
    }
    return result;
}

我使用 this 库来实现相同的行为。无需创建任何自定义视图并覆盖 onDraw()onDispatchDraw()。我使用了这个布局管理器配置:

layoutManager = new CircleLayoutManager.Builder(this)
                .setRadius(900)
                .setAngleInterval(30)
                .setDistanceToBottom(-350)
                .setGravity(CircleLayoutManager.LEFT)
                .build();