2011-01-11 8 views
0

Ich versuche eine App zu machen, bei der ein Bild angezeigt wird, es gibt ein paar Objekte, die der Benutzer identifizieren muss (zB eine Tasse), durch Berühren der Tasse im Bild auf dem Bildschirm, Ein Kreis wird gezogen, wenn er gültig ist.überprüfe die Gültigkeit der Berührung genau

Bisher habe ich eine Oberflächenansicht mit einer Bitmap so, dass sie im Vollbildmodus gezeichnet werden kann, und beim Berühren des Bildschirms wird ein Kreis zur Ansicht gezeichnet.

Ich konnte nur daran denken, die Koordinate des Bechers manuell in das Bild zu bekommen (hartkodiert), und überprüfe es anhand der Koordinaten von event.getX() und event.getY(). Dies würde jedoch nicht funktionieren, da sich die Bildschirmauflösung ändert.

Was ist ein besserer Weg? Es ist so, als würde ich versuchen, bestimmte Bereiche, die ich in meiner App definiert habe, präzise zuzulassen.

+0

In Bezug auf alle bisherigen Antworten, ich bin sicher, ich habe irgendwo gelesen, dass Android alle Pixelwerte auf/ab skaliert, so dass der Code nur mit 480x320, auf 1.6 und höher sowieso funktioniert? –

Antwort

1

Sie können die Koordinaten speichern, wie Sie vorgeschlagen haben, aber passen Sie sie basierend auf der Größe der SurfaceView im Vergleich zur Größe von BitmapDrawable an. Wenn Sie beispielsweise wissen, dass ein bestimmter Bereich 100 Pixel von links ist, können Sie die Skalierung als "surfaceView.getWidth()/bitmapDrawable.getIntrinsicWidth()" verwenden. Multiplizieren Sie Ihre Skalierung mit Ihrem Wert (100px), um die endgültige Position zu erhalten. Wenn Sie das gleiche Seitenverhältnis auf dem Bild beibehalten, müssen Sie Ihre Skala von der größeren der beiden (Breite vs. Höhe) und verwenden Sie die gleiche Skala für Höhe und Breite.

0

In einer bestimmten Auflösung ist die Position der Tasse festgelegt oder variiert auch dort.

Auch, was ist mit der Ausrichtung (Landschaft, Porträt)? ändert sich der Standort auch entsprechend?

Es gibt Standardauflösungen, so dass Sie immer den Standort mit Auflösung abbilden können.

Sie können auch X, Y-Koordinaten erhalten und prüfen, ob sie innerhalb eines Bereichs liegen, der auf Höhe und Breite des Becherbildes basiert.

0

vor allem die Größe des Bildschirms herausfinden (Bildschirmabmessungen.).

platzieren Sie nun Objekte relativ zu Ihrem Bildschirmbereich.

z. halte die Tasse auf SCREENWIDTH - 60 und überprüfe die Koordinaten der Berührung ähnlich.

es wud definitiv funktionieren.

Verwandte Themen