答案 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();
}