Относительно координаты экрана?

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