約のドキュメントは次のように述べていCanvas.setMatrix()
ます。
現在の行列を指定された行列に完全に置き換えます。行列パラメーターが null の場合、現在の行列は単位にリセットされます。
そして、次のようにCanvas.concat()
言います。
現在の行列を指定された行列と事前に連結します。
しかし、それは不自然に思えます。このコードを試したとき:
Matrix matrix = new Matrix();
mCamera = new Camera();
canvas.save();
mCamera.rotateY(y_rotate_angle);
mCamera.getMatrix(matrix);
canvas.concat(matrix);
canvas.drawText(text, 30, 100, redPaint);
// canvas.restore();
canvas.setMatrix(null);
canvas.setMatrix(matrix);
canvas.drawText(text, 30, 100, greenPaint);
その結果、2 番目のテキストは(30,100) で描画する代わりに(60,100)で描画されます (試しcanvas.restore()
てコメントした場合でもcanvas.setMatrix
)。