Ich möchte komplexe Formen als Schnittpunkt zweier Kreise und eines Rechtecks erstellen. Nach ein wenig Recherche scheint die Klasse java.awt.geom.Area perfekt für diese Aufgabe zu sein .
Ich war jedoch bestürzt, als ich entdeckte, dass das awt
-Paket nicht mit dem Android-SDK geliefert wurde. Kennt jemand Alternativen für Android, mit denen ich komplexe Formen erstellen kann, indem Sie die Vereinigung und Schnittmenge einfacher Formen definieren?
Hinweis: Das Verwenden von Grafik-Clipping zum Zeichnen der Form funktioniert nicht, da ich nicht nur die Formen zeichnen möchte, sondern auch die Shapes im Speicher speichern möchte, um Kollisionserkennung und andere Interaktionen durchzuführen.
Android-Alternativen zu java.awt.geom.Area
BEARBEITEN : @numan hat auf eine ausgezeichnete -Option hingewiesen, die einige Klassen im Android-SDK verwendet, die mir zum Zeitpunkt der ursprünglichen Antwort nicht bekannt waren:
Mit Region
können Sie geometrische Bereiche definieren. Anschließend können Sie mithilfe von Region
s op()
method mit Region.Op
enum
Schnittpunkte und komplexere Formen berechnen.
Sie können eine Canvas
verwenden, um benutzerdefinierte Formen zu zeichnen, insbesondere mit den Methoden clip *:
Hier sind einige Seiten über 2D-Grafiken in Android:
Einige andere gute Optionen, wenn Ihre Grafiken gleich bleiben (oder ungefähr die gleichen) sind XML-basiert:
Und eine Lösung, die ich ziemlich gut finde, sind 9-patch Zeichensätze:
Kollisionserkennung Es könnte für Ihre Zwecke zu viel werden, aber es gibt eine Reihe von Spielphysik-Bibliotheken:
Grundlagen zu Android, libgdx und box2d
Oder Sie können Ihre eigene Lösung rollen:
Kollisionserkennung für gedrehte Bitmaps auf Android
Es hängt wirklich vom Zweck ab; Für Spiele wäre es wahrscheinlich das Beste, einfach eine Bibliothek zu benutzen. Aber wenn die Kollisionserkennung die einzige Funktion ist, die Sie benötigen, sollten Sie es selbst tun, um Ressourcen zu sparen.
Extra Credit: Einige Indizes von Android-Bibliotheken
Android UI takelit verwendet Skia für die Grafikdarstellung und skia verwendet die Region Abstraktionen für Formoperationen an Formen (z. B. Schnittmenge, Vereinigung, subtrahieren. siehe Region.Op-Klasse) Formen aus Pfaden oder Rect.
Mit der Region.quickContains-Methode oder der Region.quickReject-Methode erhält die Region-Klasse außerdem eine einfache Kollisionserkennung.