Como funcionam as coordenadas da tela do Android?


154

Estou trabalhando com o Android Animatione achei o sistema de coordenadas do Android bastante confuso, por isso estou aqui para fazer esta pergunta sobre como as coordenadas funcionam no Android. Estou seguindo esta imagem para mover uma visualização para outra, mas parece que não está funcionando:

imagem

Respostas:


294

insira a descrição da imagem aqui

Esta imagem apresenta as duas orientações (paisagem / retrato)

Para obter MaxX e MaxY, continue lendo.

Para as coordenadas da tela do dispositivo Android, o conceito abaixo funcionará.

Display mdisp = getWindowManager().getDefaultDisplay();
Point mdispSize = new Point();
mdisp.getSize(mdispSize);
int maxX = mdispSize.x; 
int maxY = mdispSize.y;

EDIT: - ** ** para dispositivos que suportam o nível da API Android com mais de 13. Pode usar o código abaixo.

    Display mdisp = getWindowManager().getDefaultDisplay();
    int maxX= mdisp.getWidth();
    int maxY= mdisp.getHeight();

(x, y): -

1) (0,0) é o canto superior esquerdo.

2) (maxX, 0) é o canto superior direito

3) (0, maxY) é o canto inferior esquerdo

4) (maxX, maxY) é o canto inferior direito

aqui maxX e maxY são a altura e a largura máximas da tela em pixels, as quais recuperamos acima no código fornecido.


Se tivermos o Viewcom layout_width="1" layout_height="1", isso significa que o canto superior esquerdo é (0,0) e o canto inferior direito é (1, 1)? Isso não significaria que Viewlargura = 2 e altura = 2? Contradição.
riwnodennyk 12/02

@AAnkit, por favor, confronte, isso é válido para as duas orientações da tela (Retrato e Paisagem), as alterações na orientação da tela afetam (0,0) -> canto superior esquerdo. (maxX, 0) -> canto superior direito (0, Maxy) -> canto inferior esquerdo (maxX, Maxy) -> canto inferior direito
Qadir Hussain

Muito obrigado pela imagem. realmente salvou minha vida.
Sharl Sherif

19

Para a API 13 do Android e você precisa usar o seguinte:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int maxX = size.x; 
int maxY = size.y;

Então (0,0) é o canto superior esquerdo e (maxX, maxY) é o canto inferior direito da tela.

O 'getWidth ()' para o tamanho da tela está obsoleto desde a API 13

Além disso getWidth () e getHeight () são métodos de android.view.View classe em android.So quando sua classe java estende Ver classe não há despesas gerais de janelas.

          int maxX=getwidht();
          int maxY=getHeight();

tão simples como isso.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.