我有一个ViewPager,我覆盖onPageScrolled
以接收用户滚动的金额。然后我需要根据从scroll方法接收的positionOffset
来翻转视图。我希望实现这样的目标。翻转所选视图旁边的所有视图。
在我的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);
}
看起来这只是从左侧偏斜:
如何从右边获得同样的效果?如果它不仅会使它倾斜而且还会改变高度,那将会很好,因此它会产生轻微翻转的错觉。
答案 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);
}