在android中沿着定义的路径移动图像

时间:2013-07-16 09:16:09

标签: android

我正在为幼儿园的孩子们教数字。它需要一些像this这样的动画但是我无法在画布中顺利实现这个动画。

我希望使用此虚线显示完全相同的动画。

请指导我完成这种类型的动画。

1 个答案:

答案 0 :(得分:0)

您需要的是:

  • 一个循环
  • 路径定义

循环应更新当前图像位置和旋转。然后在屏幕上绘制更新的动画。您可以覆盖dispatchDraw方法并在其最后调用invalidate。您可以在绘图前更新位置。您的情况类似于游戏编程,因此您可以查找有关游戏循环的文章。

路径定义应该允许您根据时间计算位置。例如,您可以使用贝塞尔曲线。贝塞尔曲线方程是参数化的,参数是“时间”。使用动画时间可以让您沿着路径平稳移动。

通用游戏循环示例:http://www.gameprogblog.com/generic-game-loop/

贝塞尔曲线:http://en.wikipedia.org/wiki/B%C3%A9zier_curve

long time = System.currentTimeMillis();
protected void dispatchDraw(Canvas canvas) {
    PointF pos = getBezierPos(System.currentTimeMillis() - time);
    drawImage(pos);
    invalidate();
}