2012-08-06 14 views
15

Ich habe Probleme beim Erhalten der echten (x, y) von meinem Bildschirm durch die Behandlung der Berührungsereignisse von einem View Item.Wie erhalten Sie Bildschirm-Koordinaten, die dem gesamten Bildschirm entsprechen, und nicht die Ansicht berührt?

Ich habe dies:

enter image description here

Als ich den Artikel ansehen berühren, gibt es mir mit dem Ursprung in der linken oberen Ecke Koordinaten, und wenn ich schieben Sie die Finger die Ansicht aus, es gibt mir negative Koordinaten (wenn man nach oben oder nach links rutscht). enter image description here enter image description here

Ich möchte den Blick Lage auf dem Bildschirm erhalten, um es in die (x, y) hinzuzufügen Koordinaten, die ich erhalten, so dass das Endergebnis ist, dass die (0,0) in der ist obere linke Ecke des gesamten Bildschirms.

Ich brauche auch die gesamte Bildschirmgröße, so dass ich weiß, wenn der Finger in der unteren rechten Ecke befindet.

Wie kann ich das erreichen?

Danke.

Antwort

16

Motionklasse getX() und getY() Methoden, die die Koordinaten in Bezug auf die Ansicht zurückkehren, wie Sie entdeckt haben.

aber es ist auch getRawX() und getRawY() Methoden hat, die an die Dokumentation nach sagen:

Gibt den ursprünglichen Roh-X (oder Y) dieses Ereignis koordinieren. Bei Berührungsereignissen auf dem Bildschirm ist dies der ursprüngliche Ort des Ereignisses auf dem Bildschirm, bevor es für das enthaltene Fenster und die Ansichten angepasst wurde.

Klingt wie das ist, wonach Sie suchen.

+0

Dies ist der einfachste Weg, danke für die Antwort. – Alex

6

Versuchen Sie, diese nach Ansicht auf dem Bildschirm geladen zu verwenden.

int[] location = new int[2]; 
View.getLocationOnScreen(location); 
Log.v(Common.TAG,"left: "+ location[0]); 
Log.v(Common.TAG,"top: "+ location[1]); 
Verwandte Themen