如何永久地(RecyclerView)进行(矩阵?)转换

时间:2015-11-11 17:53:48

标签: android android-layout transformation matrix-transform

我目前正在使用水平为RecyclerView的{​​{1}}。 LinearLayout占据了所有屏幕:

enter image description here

我找到了像这样对RecyclerView进行修复转换的方法:

enter image description here

请注意,转型就像一个"沉没"或者"垮台"做一个" deep"影响。由于项目'大小可以改变,我需要一个永久的转变,这就是为什么我想在RecyclerView

中做出这个改变的原因

反正有吗?也许是在RecyclerView ??

上做到这一点的方法

非常感谢你。

问候。

圣拉斐尔。

添加

我想注意PageTransformer做了类似的事情。事实上,我想要的东西与三星Galaxy S3在使用其中一个启动器(使用onDraw)滚动时所做的非常相似,但我想修改该转换:

enter image description here

我在尝试什么?

我试图滚动ViewPager的大型水平适配器,但我想"折叠"一点点的观点,给人以'#34;缸"。

的印象

1 个答案:

答案 0 :(得分:1)

创建一个扩展RecyclerView并覆盖其dispatchDraw(或draw)方法的类,使用Matrix#setPolyToPoly进行透视转换,下面的代码会像&# 34;星球大战"效果,您需要拨打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();
    }