Como girar uma tela em um ponto específico usando android.graphics.Camera.rotateX (angle)
Estou tentando usar a câmera (android.graphics.Camera e não a câmera de hardware) para girar uma tela de vistas em torno de um ponto específico, neste caso, no meio da tel
No dispatchDraw (Canvas canvas) - por uma questão de brevidade, deixo de fora todas as partes não importante
camera.save();
camera.rotateX(0);
camera.rotateY(0);
camera.rotateZ(angle);
camera.getMatrix(cameraMatrix);
camera.restore();
canvas.concat( cameraMatrix );
A tela gira, mas sempre no canto superior esquerd
NOTA: Como a tela foi construída para ser maior que a área de exibição, eu também preciso traduzir o resultado final para que fique centralizado na exibição, posso fazer isso com
canvas.translate(xOffset,yOffset) PRIOR to calling the camera methods
O
cameraMatrix.preTranslate(xOffset,yOffset) AFTER the camera methods
Ambos centralizam corretamente a tela na tela, mas não consigo obter o ponto de rotação como o centro da chamada camera.rotateZ (ângulo), tentei usar os métodos na amostra do Android 3D, mas enquanto eles parecem funcionar o eixo X / Y eles não parecem afetar o eixo Z
Qualquer ajuda seria apreciada, os documentos não são exatamente detalhado