我想构建复杂的形状作为两个圆和一个矩形的交集。经过一番研究,java.awt.geom.Area类似乎非常适合这项任务。
然而,当我发现该awt
软件包没有附带 android SDK 时,我感到很沮丧。有谁知道android的任何替代方案,允许我通过定义简单形状的联合和交集来创建复杂的形状?
注意:使用图形剪辑来绘制形状是行不通的,因为我不只是想绘制形状,我还想将形状存储在内存中以进行碰撞检测和其他交互。
我想构建复杂的形状作为两个圆和一个矩形的交集。经过一番研究,java.awt.geom.Area类似乎非常适合这项任务。
然而,当我发现该awt
软件包没有附带 android SDK 时,我感到很沮丧。有谁知道android的任何替代方案,允许我通过定义简单形状的联合和交集来创建复杂的形状?
注意:使用图形剪辑来绘制形状是行不通的,因为我不只是想绘制形状,我还想将形状存储在内存中以进行碰撞检测和其他交互。
java.awt.geom.Area 的 Android 替代品
编辑:@numan 指出了使用 Android SDK 中的一些类的一个很好的选择,我在最初回答时不知道:
https://developer.android.com/reference/android/graphics/Region.html https://developer.android.com/reference/android/graphics/Region.Op.html
Region
允许您定义几何区域,然后您可以使用Region
sop()
方法Region.Op
enum
来计算交叉点和更复杂的形状。
您可以使用 aCanvas
来绘制自定义形状,尤其是使用 clip* 方法:
http://developer.android.com/reference/android/graphics/Canvas.html
以下是一些关于 Android 中 2d 图形的页面:
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-patch 可绘制对象:
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
碰撞检测 对于您的目的来说这可能有点矫枉过正,但有许多游戏物理库:
http://www.andengine.org http://code.google.com/p/andengineexamples/
http://www.dremsus.com/index.php/2012/01/box2d-game-demo-in-android/
或者您可以推出自己的解决方案:
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 库的一些索引
http://www.appbrain.com/stats/libraries/dev
Android UI takelit 使用 Skia 进行图形渲染,skia 使用Region抽象对来自 Paths 或 Rects 的形状(例如,交集、联合、减法。参见 Region.Op 类)形状进行集合操作。
Region 类还可以通过 Region.quickContains 或 Region.quickReject 方法进行简单的碰撞检测。