Я пытаюсь установить матрицу для Android FrameLayout / View, как показано ниже. Но после применения матрицы никаких изменений в представлении нет.
FrameView.Matrix.Set(matrix);
Та же матрица работает для просмотра изображений
заранее спасибо
But there is no changes in the view after applying matrix
Причина в том, что матрица не применяется к макету. Для FrameLayout не существует метода set для установки Matrix.
FrameView.Matrix используется для получения матрицы FrameView. И Matrix.Set(matrix) изменяет значение матрицы, которую вы получаете из FrameView, но не применяется к ней.
Например:
var frameLayout = FindViewById<FrameLayout>(Resource.Id.frameLayout1);
float[] f = new float[9];
float[] f2 = new float[9];
float[] f3 = new float[9];
Matrix matrix = new Matrix();
matrix.PostRotate(10);
matrix.GetValues(f);
frameLayout.Matrix.GetValues(f2);
frameLayout.Matrix.Set(matrix);
frameLayout.Matrix.GetValues(f3);
После вызова установленного метода. Значение Матрицы (f3) остается таким же, как исходное (f2).
Если вы хотите внести некоторые изменения в макет, вы можете использовать собственный макет и сделать это в OnDraw().