Что такое андроидный эквивалент java.awt.geom.Area?

Я хочу построить сложные фигуры как пересечение двух кругов и прямоугольника. После изучения немного, класс java.awt.geom.Area кажется идеальным для этой задачи.

Однако я был встревожен тем, что обнаружил, что пакет awt не поставляется с SDK android. Кто-нибудь знает какие-либо альтернативы для Android, которые позволяют мне создавать сложные формы, определяя объединение и пересечение более простых фигур?

Примечание. Использование обрезки графики для рисования фигуры не работает, потому что я не просто хочу рисовать фигуры, но также хочу сохранять фигуры в памяти для обнаружения столкновений и других взаимодействий.

    Android-альтернативы java.awt.geom.Area

    EDIT : @numan указал отличный вариант, используя некоторые классы в Android SDK, о которых я не знал во время первоначального ответа:

    https://developer.android.com/reference/android/graphics/Region.html https://developer.android.com/reference/android/graphics/Region.Op.html

    Region позволяет вам определять геометрические области, а затем вы можете использовать метод op() Region.Op enum Region.Op для вычисления пересечений и более сложных форм.

    Некоторые другие варианты

    Вы можете использовать Canvas для рисования пользовательских фигур, особенно с помощью методов clip *:

    http://developer.android.com/reference/android/graphics/Canvas.html

    Вот несколько страниц о 2D-графике в Android:

    http://developer.android.com/guide/topics/graphics/2d-graphics.html http://developer.android.com/guide/topics/graphics/2d-graphics.html#shape-drawable http: // developer.android.com/guide/topics/graphics/opengl.html

    Некоторые другие хорошие варианты, если ваша графика останется прежней (или примерно одинаковой), основаны на XML:

    http://developer.android.com/guide/topics/graphics/2d-graphics.html#drawables-from-xml

    И одно решение, которое я нахожу довольно аккуратным, использует 9-патч-чертежи:

    http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

    Обнаружение конфликтов Это может быть излишним для ваших целей, но есть ряд библиотек физики игры:

    http://www.andengine.org http://code.google.com/p/andengineexamples/

    http://bulletphysics.org

    http://www.emini.at/

    http://www.dremsus.com/index.php/2012/01/box2d-game-demo-in-android/

    Основы Android, libgdx и box2d

    Или вы можете опрокинуть свое собственное решение:

    http://cooers.blogspot.com/2012/08/simple-collision-detection-in-2d.html

    http://content.gpwiki.org/index.php/Polygon_Collision

    http://www.codeproject.com/Questions/244344/Collision-Detection-in-Android

    Обнаружение столкновений для повернутых растровых изображений на Android

    Это действительно зависит от цели; Для игр вам, вероятно, будет лучше всего использовать библиотеку; Но если обнаружение столкновения – единственная функция, в которой вы нуждаетесь, вам лучше сделать это самостоятельно, чтобы сэкономить ресурсы.

    Дополнительный кредит: некоторые индексы Android-библиотек

    http://www.appbrain.com/stats/libraries/dev

    http://www.theultimateandroidlibrary.com/

    http://www.openintents.org/en/

    Android UI takelit использует Skia для графического рендеринга, а skia использует абстракции Region для заданных операций над фигурами (например, пересечение, объединение, вычитание. См. Раздел Region.Op) из Paths or Rects.

    Класс Region также поможет вам получить простое обнаружение столкновений с помощью методов Region.quickContains или Region.quickReject.