private void ConfigureTransform(int viewWidth, int viewHeight)
{
Activity activity = Activity;
if (mTextureView == null || mPreviewSize == null || activity == null) {
return;
}
SurfaceOrientation rotation = activity.WindowManager.DefaultDisplay.Rotation;
Matrix matrix = new Matrix ();
RectF viewRect = new RectF (0, 0, viewWidth, viewHeight);
RectF bufferRect = new RectF (0, 0, mPreviewSize.Width, mPreviewSize.Height);
float centerX = viewRect.CenterX();
float centerY = viewRect.CenterY();
if (rotation == SurfaceOrientation.Rotation90 || rotation == SurfaceOrientation.Rotation270) {
bufferRect.Offset (centerX - bufferRect.CenterX(), centerY - bufferRect.CenterY());
matrix.SetRectToRect (viewRect, bufferRect, Matrix.ScaleToFit.Fill);
float scale = System.Math.Max ((float)viewHeight / mPreviewSize.Height, (float)viewWidth / mPreviewSize.Width);
matrix.PostScale (scale, scale, centerX, centerY);
matrix.PostRotate (90 * ((int)rotation - 2), centerX, centerY);
}
mTextureView.SetTransform (matrix);
}