如何使(矩阵?)永久转换为 RecyclerView

How to make a (matrix?) transformation permanently a RecyclerView

我目前正在使用具有水平 LinearLayoutRecyclerViewRecyclerView 占满屏幕:

我正在寻找对 RecyclerView 进行修复转换的方法,如下所示:

请注意,转换类似于 "sinking" 或 "downfall" 以产生 "deep" 效果。由于项目的大小可以改变,我需要一个永久的转换,这就是为什么我想在 RecyclerView

有办法吗?也许是 onDraw 上的一种方法 ??

非常感谢您。

此致。

拉斐尔


添加:

我想注意到 PageTransformer 做了类似的事情。事实上,我想要的东西与三星 Galaxy S3 在您使用他们的启动器之一(使用 ViewPager)滚动时所做的非常相似,但我想修复该转换:


我在尝试什么?

我正在尝试滚动 RecyclerView 的大型水平适配器,但我想 "fold" 一点视图,以便给 "cylinder" 留下一点印象。

制作一个扩展RecyclerView的class并重载其dispatchDraw(或draw)方法,使用Matrix#setPolyToPoly进行透视变换,如下代码产生类似 "Star Wars" 的效果,您需要调用 setPolyToPoly 两次并在自定义视图的两半上应用 Matrix

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        final float DELTAX = w * 0.15f;
        float[] src = {
                0, 0, w, 0, w, h, 0, h
        };
        float[] dst = {
                0, 0, w, 0, w - DELTAX, h, DELTAX, h
        };
        matrix.setPolyToPoly(src, 0, dst, 0, 4);
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        canvas.save();
        canvas.concat(matrix);
        super.dispatchDraw(canvas);
        canvas.restore();
    }