Android: Wie kann man überprüfen, ob ein Pfad berührten Punkt enthält?

Ich würde versuchen, eine Anwendung zu entwickeln, in der ich eine Planimetrie zeichnen kann. Also, jedes Zimmer hat seine eigene ID oder Name und wenn ich ein Zimmer berühre, möchte ich eine Toast-Nachricht mit dieser ID oder Name zeigen. Das Problem ist, wie zu überprüfen, ob und welcher Weg berührt wird!

Ich habe eine Menge Themengespräche geführt, die über dieses Problem gesprochen haben. Jemand sagt, die getBounds- Methode zu verwenden, und nachher enthält Methode für die Überprüfung, ob berührte Punkt in Rect ist. Aber, ich denke, getBounds-Methode gibt die kleinste Rect, die Pfad enthält, richtig?

  • Android ExpandableListView mit Animation
  • Wie kann man in-app-Kauf in meiner Android-Anwendung implementieren?
  • Android - Was sind die guten Reporting-Tools, um Berichte aus SQLite Data Source zu entwerfen und zu generieren?
  • ANDROID - dx Verarbeitung zu langsam
  • Wie entferne ich die rechte Randlinie in Android Studio (Intellij)?
  • Setze ein Bild aus der Galerie für den Hintergrund des Desktop-Telefons (Android-Java)
  • Also, Räume haben unterschiedliche kundenspezifische geometrische Formen und aus diesem Grund, wenn ich Beschränkungen über 2 enge Räume bekomme, könnte die Methode einen gemeinsamen Satz von Punkten zurückgeben. Schlecht! Jedes Zimmer hat nur ihre Fläche Punkte. Wie kann ich dieses Problem lösen?

    In iOS könnte ich PathContainsPoint- Methode verwenden, aber leider hat Android Path nichts Ähnliches.

    Ich hoffe jemand kann mir Thx im Voraus helfen

  • Wo wird Code aufhören zu laufen, wenn App von Task-Manager auf Android getötet wird
  • Verwenden von Android Studio mit Vuforia
  • Überprüfen Sie zwei Felder mit der Realm-Datenbank
  • Bei der Verwendung von TextInputLayout konnte die Ressource @ id nicht sichtbar werden
  • Führen Sie Android-Programm als root
  • Android gradle Projekt baut sehr langsam
  • 2 Solutions collect form web for “Android: Wie kann man überprüfen, ob ein Pfad berührten Punkt enthält?”

    Ok, ich habe mein Problem gelöst. Ich posten den Beispielcode:

    Path p; Region r; @Override public void onDraw(Canvas canvas) { p = new Path(); p.moveTo(50, 50); p.lineTo(100, 50); p.lineTo(100, 100); p.lineTo(80, 100); p.close(); canvas.drawPath(p, paint); RectF rectF = new RectF(); p.computeBounds(rectF, true); r = new Region(); r.setPath(p, new Region((int) rectF.left, (int) rectF.top, (int) rectF.right, (int) rectF.bottom)); } public boolean onTouch(View view, MotionEvent event) { Point point = new Point(); point.x = event.getX(); point.y = event.getY(); points.add(point); invalidate(); Log.d(TAG, "point: " + point); if(r.contains((int)point.x,(int) point.y)) Log.d(TAG, "Touch IN"); else Log.d(TAG, "Touch OUT"); return true; } 

    Hier ist ein Gedanke: Erstellen Sie einen neuen Weg, der ein winziges Quadrat um den Punkt ist, der berührt wurde, und schneiden Sie dann diesen Pfad mit Ihrem Weg, um mit path.op () getestet zu werden und sehen Sie, ob das Ergebnis leer ist.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.