mCamera.translate(degrees / 90 * centerX*2, 0, 0);
mCamera.rotateY(degrees *params);
这个是主要的旋转代码,沿x轴平移,绕Y轴旋转;camera的动作其实就是产生一个matrix,camera的translate相当于matrix的setScale,而缩放是以(0,0)点为中心的,想要实现当前屏的VIEW的右边界从屏幕右侧平移至左侧(即实现旋转不出屏),即旋转轴为右边界,那就是要将此VIEW的右边界中心点移动到(0,0),则有:
matrix.preTranslate(-centerX*2, -centerY);
这样图片就被移动过了,所以调用:
matrix.postTranslate(centerX*2, centerY);
这么操作后,图片的动画效果就是沿右边界的。
注:centerX和centerY是界面中心的坐标。
同理,下一个VIEW是要沿左边界旋转的,则:
matrix.preTranslate(0, -centerY);
matrix.postTranslate(0, centerY);
mCamera.rotateY(degrees *params);
这个是主要的旋转代码,沿x轴平移,绕Y轴旋转;camera的动作其实就是产生一个matrix,camera的translate相当于matrix的setScale,而缩放是以(0,0)点为中心的,想要实现当前屏的VIEW的右边界从屏幕右侧平移至左侧(即实现旋转不出屏),即旋转轴为右边界,那就是要将此VIEW的右边界中心点移动到(0,0),则有:
matrix.preTranslate(-centerX*2, -centerY);
这样图片就被移动过了,所以调用:
matrix.postTranslate(centerX*2, centerY);
这么操作后,图片的动画效果就是沿右边界的。
注:centerX和centerY是界面中心的坐标。
同理,下一个VIEW是要沿左边界旋转的,则:
matrix.preTranslate(0, -centerY);
matrix.postTranslate(0, centerY);