Как установить матрицу для Android FrameLayout?

Я пытаюсь установить матрицу для Android FrameLayout / View, как показано ниже. Но после применения матрицы никаких изменений в представлении нет.

FrameView.Matrix.Set(matrix);

Та же матрица работает для просмотра изображений

заранее спасибо

0
0
593
1

Ответы 1

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().

Другие вопросы по теме