Вращение представления Android - PullRequest
1 голос
/ 06 декабря 2011

Я хочу повернуть представление Android с уровнем API 8. Например, я хочу повернуть EditText на 90 градусов, чтобы, когда пользователь вводит текст в EditText с выравниванием по левому краю, первый символ находится внизу (повернут на 90градусов) и последующие символы вводятся вверх.

Сначала я попытался использовать анимацию с длительностью 0, но вы все еще видите поворот поля.К сожалению, это не стартер.Если бы я мог найти способ полностью скрыть анимацию, этот метод выглядит самым простым.

Затем я попытался повернуть холст в onDraw, который отлично подходит для квадратных представлений, но не так хорош для тех, которые неквадрат (и я не контролирую размеры EditText).Я пробовал различные попытки обрезки и перевода холста, но, хотя я мог заставить курсор появляться в начале ввода текста, он делал бы странные вещи, когда кто-то начинал вводить больше контента (обычно контент исчезал из поля зрения).,

Я также попытался создать квадрат View в onMeasure, затем повернуть холст в onDraw, а затем вернуть размеры View в последующее onMeasure.Первые два шага работали отлично.Но третий шаг дал результаты, аналогичные описанным выше: все выглядело нормально, пока пользователь не начал вводить больше текста, после чего текст поля делал странные вещи (обычно исчезающие).

Кто-нибудь смог успешно повернуть неAndroid View (например, EditText) без анимации и с уровнем API 8 или ниже?

1 Ответ

0 голосов
/ 06 декабря 2011

Я потратил довольно много времени, пытаясь повернуть представление точно на уровне API 8, и я думаю, что невозможно заставить его работать должным образом.К вашему сведению, он также не работает должным образом на Android 3.2, хотя в классе View есть метод setRotation(int angle).Например, для VideoView это не будет работать корректно.

PS тогда мне казалось, что мне удалось заставить вращение работать не только для VideoView.Вы переопределили метод onTouchEvent?Если у вас нет вашего вида, вы не будете получать сенсорное событие, поскольку вращение холста просто повернет рисунок, но он все равно будет получать сенсорные события в своей старой области.Вы должны вручную применить матрицу вращения к координатам события касания, чтобы сместить их в нужное место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...