Есть ли способ найти экранные координаты отрисовки ImageView? - PullRequest
0 голосов
/ 18 мая 2011

У меня есть действие, которое состоит только из ImageView. Drawable, содержащийся в ImageView, является растровым изображением, полученным с камеры. Изображение автоматически масштабируется (сохраняя соотношение сторон растрового изображения), чтобы масштабированная ширина соответствовала ширине ImageView, а изображение центрировалось на экране по вертикали.

Мне нужно выяснить координаты верхнего левого пикселя фактического объекта рисования (не самого ImageView), но класс ImageView, похоже, не дает мне такого способа.

Мне кажется, что я мог бы потенциально рассчитать его, основываясь на размерах исходного растрового изображения и размерах ImageView, но это потребовало бы большого количества математических операций, которые не требовались бы и были бы подвержены ошибкам с плавающей запятой.

Кто-нибудь знает способ найти координаты верхнего левого пикселя Drawable относительно ImageView?

Спасибо.

1 Ответ

2 голосов
/ 18 мая 2011

Глядя на исходный код ImageView , он переводит матрицу наполовину в вертикальный размер (т. Е. Центрирует ее по вертикали), поэтому вы можете извлечь ее с помощью ImageView getImageMatrix() и проверьте вертикальный перевод с помощью Matrix#getValues(float[]). Если я правильно понял, это будет шестое значение .

Я не могу проверить это сейчас, но это будет что-то вроде:

Matrix matrix = iv.getImageMatrix ();
float[] values = new float[];
matrix.getValues(values);
float startY = values[5];
...