Jak działają współrzędne ekranu Androida?

154

Pracuję z Androidem Animationi stwierdziłem, że system współrzędnych Androida jest dość zagmatwany, więc jestem tutaj, aby zadać to pytanie o to, jak współrzędne działają w systemie Android. Podążam za tym obrazem, aby przenieść jeden widok do drugiego, ale wygląda na to, że nie działa:

wizerunek

Yasir Khan
źródło

Odpowiedzi:

294

wprowadź opis obrazu tutaj

Ten obraz przedstawia obie orientacje (pozioma / pionowa)

Aby uzyskać MaxX i MaxY, czytaj dalej.

W przypadku współrzędnych ekranu urządzenia z Androidem poniższa koncepcja będzie działać.

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

EDYCJA: - ** ** dla urządzeń obsługujących Android api w wersji starszej niż 13. Można użyć poniższego kodu.

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

(x, y): -

1) (0,0) to lewy górny róg.

2) (maxX, 0) to prawy górny róg

3) (0, maxY) to lewy dolny róg

4) (maxX, maxY) znajduje się w prawym dolnym rogu

tutaj maxX i maxY to maksymalna wysokość i szerokość ekranu w pikselach, które pobraliśmy w powyższym kodzie.

AAnkit
źródło
Jeśli mamy Viewz, layout_width="1" layout_height="1"czy oznaczałoby to, że lewy górny to (0,0), a dolny prawy to (1, 1)? Czy nie oznaczałoby to View, że szerokość = 2, a wysokość = 2? Sprzeczność.
riwnodennyk
@Ankit, czy możesz potwierdzić, jest to ważne dla obu orientacji ekranu (pionowej i poziomej), czy zmiana orientacji ekranu wpływa na (0,0) -> lewy górny róg. (maxX, 0) -> prawy górny róg (0, maxY) -> lewy dolny róg (maxX, maxY) -> prawy dolny róg
Qadir Hussain
Bardzo dziękuję za zdjęcie. to naprawdę uratowało mi życie.
Sharl Sherif
19

W przypadku interfejsu API systemu Android na poziomie 13 i musisz użyć tego:

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

Wtedy (0,0) to lewy górny róg, a (maxX, maxY) to prawy dolny róg ekranu.

Metoda „getWidth ()” określająca rozmiar ekranu jest przestarzała od wersji API 13

Ponadto getwidth () i getHeight () są metodami android.view.View klasy w android.So gdy klasa java rozciąga Zobacz klasy nie ma kosztów ogólnych managerem okien.

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

tak proste jak to.

vids
źródło
3

Mam nadzieję, że to zdjęcie usunie zamieszanie wszystkich, które jest stamtąd zbierane .

Współrzędne ekranu Androida

Gk Mohammad Emon
źródło