18

我目前有一个 android 应用程序,它利用 UI 的本机 android 视图(例如 imageviews/buttons 等)

虽然这个应用程序不是游戏,也不需要任何繁重的图形或 OpenGL,但我想加入一些与物理相关的交互。没有什么太大的影响,但可能会显示出轻微的碰撞/反弹、减速/加速或可能的摩擦。

这是否可以在 android 框架内或使用外部物理库(如 jbox2d)进行模拟,而无需使用整个游戏引擎(如 andengine、libgx 等)。

PS这是API 15+

谢谢大家。

4

4 回答 4

1

只要您可以设置/更新每帧 UI 元素的位置(例如使用 View.setTranslationX()),您就可以做到。

手动为 UI 设置动画意味着在 UI 元素和对应于它们的物理(例如 jbox2d)主体之间保持映射。然后将 UI 元素的相应位置更新为模拟主体在每一帧中的位置(例如 body.getPosition())。

在事件驱动的应用程序中,诸如 Timer 对象之类的东西对于安排物理更新很有用。

于 2015-04-21T05:18:47.073 回答
1

最简单的方法(不是那么灵活)是使用ViewPropertyAnimator

有了它,您甚至可以并行地为属性设置动画。也许您想从父级左侧更改视图边距。您可以在那里更改该边距,设置移动时间等。这个博客上的一些例子

ValueAnimator是另一种选择,它默认使用 AccelerateDecelerateInterpolator,您必须提供更改所需属性的代码。这个官方指南可能足以让他们工作

于 2015-04-21T15:22:31.893 回答
0

你想要什么是不可能的 - 你的选择是:

  1. 你可能会伪造一些东西,比如带有动画的反弹
  2. 你可以实现一个全新的 ui lib
  3. 你用openGL我会做什么
于 2014-02-06T16:49:55.340 回答
0

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

您可以访问一个非常完整的动画 API。最后一个,连同一些视图边界、距离和可能的设备方向计算,可用于模拟您提到的几乎所有情况。

您可以创建加速/减速、形状变化……以及几乎任何您想要的动画。

如何实现您的要求:
一个接一个地拥有不同的动画,根据视图项状态动态创建和应用它们。至于状态,我指的是“物理状态”:坠落、碰撞、接触到另一个视图等等……

于 2015-04-18T01:02:29.753 回答