#android #view #android-canvas
#Android #Вид #android-canvas
Вопрос:
Я просто хочу знать, разве левая боковая координата любого элемента пользовательского интерфейса не является Y
, а верхняя координата — X
, нижние координаты — X
, а правые координаты — Y
?
правильная ли это система координат экрана, потому что (0,0) расположены в верхнем левом углу экрана? если да, то почему oval.set(.., .., .. ..)
не соответствует системе coorsinates, которая начинается с верхнего левого угла (x, y)? в документации к нему указано следующее:
Parameters
left The X coordinate of the left side of the rectangle
top The Y coordinate of the top of the rectangle
right The X coordinate of the right side of the rectangle
bottom The Y coordinate of the bottom of the rectangle
Комментарии:
1. В любой «нормальной» системе координат X обозначает горизонтальную ось, а Y — вертикальную ось. В некоторых случаях (например, на стандартном графике в математике) координаты (0,0) могут быть в левом нижнем углу, но в компьютерной графике нередко (0,0) находится в левом верхнем углу. Это по-прежнему означает, что (X, Y) относится к (горизонтальному, вертикальному), но X увеличивается слева направо, а Y сверху вниз.
2. Параметры точно соответствуют тому, что я описал. Значение для
left
будет меньшеright
, а значение дляtop
будет меньше, чем дляbottom
.3. @Squonk Теперь я в полном замешательстве. если система координат начинается с верхнего левого угла (x = 0, y = 0), то
left
этоy
иtop
этоx
. что полностью соответствует вышеупомянутым параметрам в моем вопросе.
Ответ №1:
Вы, вероятно, хотите использовать View.getLocationOnScreen(), чтобы получить координаты вашего вида
Он вернет значения смещения пикселей относительно ВЕРХНЕЙ ЛЕВОЙ точки экрана.
Примечание: getLocationOnScreen() не может быть вызван до завершения компоновки. если вы сомневаетесь, должен ли ViewTreeObserver получать уведомления о завершении компоновки.
Примечание 2: Указанные выше смещения изменятся при изменении ориентации экрана (альбомная или книжная). Если это важно для обработки вашего приложения, вы можете захотеть объявить прослушиватель для этого события. Смотрите функцию onConfigurationChanged()