我目前有一个 android 应用程序,它利用 UI 的本机 android 视图(例如 imageviews/buttons 等)
虽然这个应用程序不是游戏,也不需要任何繁重的图形或 OpenGL,但我想加入一些与物理相关的交互。没有什么太大的影响,但可能会显示出轻微的碰撞/反弹、减速/加速或可能的摩擦。
这是否可以在 android 框架内或使用外部物理库(如 jbox2d)进行模拟,而无需使用整个游戏引擎(如 andengine、libgx 等)。
PS这是API 15+
谢谢大家。
只要您可以设置/更新每帧 UI 元素的位置(例如使用 View.setTranslationX()),您就可以做到。
手动为 UI 设置动画意味着在 UI 元素和对应于它们的物理(例如 jbox2d)主体之间保持映射。然后将 UI 元素的相应位置更新为模拟主体在每一帧中的位置(例如 body.getPosition())。
在事件驱动的应用程序中,诸如 Timer 对象之类的东西对于安排物理更新很有用。
最简单的方法(不是那么灵活)是使用ViewPropertyAnimator。
有了它,您甚至可以并行地为属性设置动画。也许您想从父级左侧更改视图边距。您可以在那里更改该边距,设置移动时间等。这个博客上的一些例子
ValueAnimator是另一种选择,它默认使用 AccelerateDecelerateInterpolator,您必须提供更改所需属性的代码。这个官方指南可能足以让他们工作。
你想要什么是不可能的 - 你的选择是:
我认为这是可以实现的,至少在某个时候。
您可以访问一个非常完整的动画 API。最后一个,连同一些视图边界、距离和可能的设备方向计算,可用于模拟您提到的几乎所有情况。
您可以创建加速/减速、形状变化……以及几乎任何您想要的动画。
如何实现您的要求:
一个接一个地拥有不同的动画,根据视图项状态动态创建和应用它们。至于状态,我指的是“物理状态”:坠落、碰撞、接触到另一个视图等等……