将物理学应用于Android视图对象

18

我目前拥有一个安卓应用程序,使用本地安卓视图来作为用户界面 (例如:ImageViews/Buttons等)

虽然该应用程序不是游戏,并且也不需要任何重型图形或OpenGL,但我想加入一些与物理相关的交互。不需要太复杂的效果,可能只需要显示轻微的碰撞/弹跳、减速/加速或者摩擦。

在不使用整个游戏引擎(例如andengine、libgx等)的情况下,是否可以在安卓框架内或使用外部物理库(例如jbox2d)进行模拟?

P.S. 这适用于API 15+。

感谢大家。


请详细说明您希望如何利用物理学,您是想要能够“扔”一个按钮吗?还是一张图片?对于具有物理属性的对象,您需要哪些标准用户交互功能?具体要求将影响结果的实现方式。 - Kai
4个回答

1
只要您能每帧设置/更新UI元素的位置(例如使用View.setTranslationX()),就可以实现此操作。
手动动画UI意味着保持UI元素与对应它们的物理(例如jbox2d)体之间的映射。然后,您每帧更新UI元素的位置以符合模拟体的位置(例如body.getPosition())。
在事件驱动的应用程序中,Timer对象等工具可用于安排物理更新。

1

0

你想要的是相当不可能的 - 你的选择有:

  1. 你可以使用动画来伪造弹跳等效果
  2. 你可以实现一个全新的UI库
  3. 你可以使用OpenGL,这是我会做的

感谢您的及时回复,那jBox2d怎么样?我看到过像这个实现的东西,但在其他地方进一步阅读后,我的理解是它不太“安卓友好”。 - Kurian Vithayathil
我无法对这个库提供具体的评价,但是一个 Android 的 View 并不适合拥有物理效果。渲染视图更多地依赖于静态的、不动的内容。所以正如我之前所说的那样…… - A. Binzxxxxxx
@jedikv jBox2d是愤怒的小鸟游戏使用的引擎,所以它应该足够好用。 - Kai
我以为它使用了Flash Box2D工具 - 但不确定。 - A. Binzxxxxxx
jbox2d没有将物理应用于视图。 - A. Binzxxxxxx

0

我认为这至少在某个时候是可以实现的。

你可以访问一个相当完整的动画 API。这个API,再加上一些视图边界、距离和可能的设备方向计算,可以用来模拟几乎所有你提到的情况。

你可以创建加速/减速、形态变化等几乎任何你想要的动画。

如何实现你所要求的:
有不同的动画,一个接一个地创建和应用它们,根据视图项的状态动态地创建和应用它们。而且,我所说的状态是指“物理状态”:下落、碰撞、与另一个视图接触等等...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接