Wie melde ich mich richtig übersetzen von pixel-Koordinaten in canvas-Koordinaten in Android?

Ich bin das erfassen eines MotionEvent für eine lange klicken Sie auf ein Android - SurfaceView mit einem GestureListener. Ich habe dann übersetzen müssen die Koordinaten der MotionEvent auf canvas-Koordinaten, von denen ich erzeugen kann, die custom map-Koordinaten (nicht Google Maps).

Von dem, was ich gelesen habe, nehme ich, dass angesichts der MotionEvent e, e.getX() und e.getY() pixel-Koordinaten. Wie kann ich umwandeln diese Koordinaten, um die SurfaceView's canvas-Koordinaten?

Hier ist mein GestureListener zum hören für lange Klicks:

/**
* Overrides touch gestures not handled by the default touch listener
*/
private class GestureListener extends GestureDetector.SimpleOnGestureListener {

  @Override
  public void onLongPress(MotionEvent e) {
     Point p = new Point();
     p.x =  (int) e.getX();
     p.y = (int) e.getY();
     //TODO translate p to canvas coordinates
  }
}

Vielen Dank im Voraus!

Edit:
Hat das zu tun mit der Bildschirm-Größe/Auflösung/Farbtiefe und die Leinwand' Rect-Objekt?

  • Haben Sie versucht translate (float dx, float dy)?
  • Ich sah in ihm. Leider hab ich keine Zeichnung auf die Leinwand. Ich brauche die tatsächlichen Koordinaten. Sobald ich die canvas-Koordinaten, die ich planen, zu übersetzen, meine Leinwand-Koordinaten, um die Anwendung der Karte Koordinaten, die für die navigation verwendet werden.
  • Wirklich niemand sonst? Hat das zu tun mit der Bildschirm-Größe/Auflösung/Farbtiefe und die Leinwand' Rect-Objekt? Hat niemand getan, dass diese übersetzung vor?
  • gelöst? Ich habe auch vor dem gleichen problem
  • stackoverflow.com/a/3152172/755804
InformationsquelleAutor Phil | 2011-07-28
Schreibe einen Kommentar