Skew/Flip ViewPager 中的布局

Skew/Flip Layout in ViewPager

我有一个 ViewPager,我在其中覆盖 onPageScrolled 以接收用户滚动的数量。然后我需要根据从滚动方法收到的 positionOffset 翻转视图。我想实现这样的目标。翻转所选视图旁边的所有视图。

在我的 PageLayoutonDraw 方法中,我有以下代码试图根据收到的偏移量倾斜 canvas。

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Matrix matrix = canvas.getMatrix();
    camera.save();
    camera.rotateX(skew);
    camera.getMatrix(matrix);
    camera.restore();
    canvas.concat(matrix);
}

看起来这只是从左边歪斜了:

如何从右边实现同样的效果?如果它不仅倾斜它而且改变高度所以它给人一种轻微翻转的错觉,那就太好了。

像这样改变视角使它起作用。

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Matrix matrix = canvas.getMatrix();
    camera.save();
    camera.rotateX(-skew);
    camera.rotateY(0);
    camera.rotateZ(0);
    camera.getMatrix(matrix);

    int centerX = canvas.getWidth() / 2;
    int centerY = canvas.getHeight() / 2;
    matrix.preTranslate(-centerX, -centerY); //This is the key to getting the correct viewing perspective
    matrix.postTranslate(centerX, centerY);

    camera.restore();
    canvas.concat(matrix);
}