ViewPager中的倾斜/翻转布局

时间:2016-01-08 04:42:31

标签: android animation flip skew

我有一个ViewPager,我覆盖onPageScrolled以接收用户滚动的金额。然后我需要根据从scroll方法接收的positionOffset来翻转视图。我希望实现这样的目标。翻转所选视图旁边的所有视图。

enter image description here

在我的PageLayout onDraw方法中,我有以下代码尝试根据收到的偏移量偏斜画布。

@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);
}

看起来这只是从左侧偏斜:

enter image description here

如何从右边获得同样的效果?如果它不仅会使它倾斜而且还会改变高度,那将会很好,因此它会产生轻微翻转的错觉。

1 个答案:

答案 0 :(得分:0)

像这样更改观看视角使其有效。

@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);
}