我试图使用Camera(android.graphics.Camera而不是硬件相机)围绕特定点旋转视图画布,在这个实例中是画布的中间.
在dispatchDraw(Canvas画布)中 - 为了简洁起见,我将所有非重要部分都省略了.
camera.save();
camera.rotateX(0);
camera.rotateY(0);
camera.rotateZ(angle);
camera.getMatrix(cameraMatrix);
camera.restore();
canvas.concat( cameraMatrix );
Run Code Online (Sandbox Code Playgroud)
画布旋转,但始终从左上角开始.
注意:因为画布的构造比显示区域大,我还需要翻译最终结果,使其在显示中居中,我可以用
canvas.translate(xOffset,yOffset) PRIOR to calling the camera methods
Run Code Online (Sandbox Code Playgroud)
要么
cameraMatrix.preTranslate(xOffset,yOffset) AFTER the camera methods
Run Code Online (Sandbox Code Playgroud)
两者都正确地将画布中心放在显示器中,但我似乎无法将旋转点作为camera.rotateZ(角度)调用的中心,尝试使用3D android示例中的方法但是它们似乎适用于它们的X/Y轴似乎不影响Z轴
任何帮助将不胜感激,文档并不完全冗长.