java - java.awt.geom.Area 的 android 等价物是什么?

标签 java android geometry shapes

我想构建复杂的形状作为两个圆和一个矩形的交集。经过一番研究,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 允许您定义几何区域,然后您可以使用 Regionop() 方法与 Region.Op enum 计算交点和更复杂的形状。

一些其他选项

您可以使用 Canvas 绘制自定义形状,尤其是使用 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 drawables:

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 and box2d basics

或者您可以推出自己的解决方案:

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

Collision detection for rotated bitmaps on Android

这真的取决于目的;对于游戏,您最好只使用图书馆;但如果碰撞检测是您唯一需要的功能,您最好自己做以节省资源。

额外功劳:Android库的一些索引

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

http://www.theultimateandroidlibrary.com/

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

关于java - java.awt.geom.Area 的 android 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189305/

相关文章:

android-support-v7-appcompat 项目未在 Eclipse 中导入

java - 使用 Android 从 Facebook 获取多个源

algorithm - 如何使用 HashMap 查找一个点属于哪个区域?

mysql - 将几何图形插入带有变量的 mySQL 数据库

java - LWJGL鼠标滚轮输入

java - 在 Rserve 上仅采购一次 r 文件

java - XP 上的 Java 程序是否会像在 Windows 7 上一样运行

java - 字符串转换为日期时间

c# - 调用 Google GCM 时未经授权

c++ - 找到一组点的中心以顺时针排序?