Wie funktionieren Android-Bildschirmkoordinaten?


154

Ich arbeite mit Android Animationund habe festgestellt, dass das Android-Koordinatensystem ziemlich verwirrend ist. Daher bin ich hier, um diese Frage zu stellen, wie Koordinaten in Android funktionieren. Ich folge diesem Bild, um eine Ansicht in eine andere zu verschieben, aber es scheint nicht zu funktionieren:

Bild

Antworten:


294

Geben Sie hier die Bildbeschreibung ein

Dieses Bild zeigt beide Orientierungen (Landschaft / Hochformat)

Lesen Sie weiter, um MaxX und MaxY zu erhalten.

Für Bildschirmkoordinaten von Android-Geräten funktioniert das folgende Konzept.

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

BEARBEITEN: - ** ** für Geräte, die Android API Level älter als 13 unterstützen. Kann den folgenden Code verwenden.

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

(x, y): -

1) (0,0) ist die obere linke Ecke.

2) (maxX, 0) ist die obere rechte Ecke

3) (0, maxY) ist die untere linke Ecke

4) (maxX, maxY) ist die untere rechte Ecke

Hier sind maxX und maxY die maximale Höhe und Breite des Bildschirms in Pixel, die wir im oben angegebenen Code abgerufen haben.


Wenn wir das Viewmit haben, layout_width="1" layout_height="1"würde es bedeuten, dass oben links (0,0) und unten rechts (1, 1) ist? Würde das nicht bedeuten, dass Viewdie Breite = 2 und die Höhe = 2 ist? Widerspruch.
Riwnodennyk

@AAnkit können Sie bitte bestätigen, dies gilt für beide Bildschirmausrichtungen (Hochformat und Querformat), wirkt sich eine Änderung der Bildschirmausrichtung auf (0,0) -> obere linke Ecke aus. (maxX, 0) -> obere rechte Ecke (0, maxY) -> untere linke Ecke (maxX, maxY) -> untere rechte Ecke
Qadir Hussain

Vielen Dank für das Bild. es hat mir wirklich das Leben gerettet.
Sharl Sherif

19

Für Android API Level 13 und Sie müssen dies verwenden:

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

Dann ist (0,0) die obere linke Ecke und (maxX, maxY) die untere rechte Ecke des Bildschirms.

Das 'getWidth ()' für die Bildschirmgröße ist seit API 13 veraltet

Darüber hinaus sind getwidth () und getHeight () Methoden der android.view.View- Klasse in android.So Wenn Ihre Java-Klasse die View-Klasse erweitert, gibt es keine windowManager-Overheads.

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

so einfach ist das.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.