Android的API 15动画类包含:
public boolean getTransformation(long currentTime, Transformation outTransformation) {
... code ...
}
该方法计算增量时间并将其发送到内插器,内插器又基于动画运行的时间,返回一个值,该值又应用于转换。
当我构建自己的自定义视图时,我使用post(Runnable)方法,然后调用我的逻辑更新,无效,然后再次发布(Runnable),如果不满足某些条件。逻辑调用需要1 ms,覆盖onDraw(Canvas)也需要1 ms。烦扰我的是invalidate()调用,它经常使我的delta时间达到40以上的值(40 ms是每秒25帧),并且不建议获得高于此值的值。使用增量时间来计算下一帧的绘制位置经常是断断续续的,这是不可能的。我不得不使用增量时间,并依赖手机单独更新视图的速度,使其在不同的手机上变得越来越快,这不是一个好主意。
SurfaceViews是我无法使用的东西,因为它们的结构与其他视图没有凝聚力(主要是Z深度问题)。
现在我的问题是,Android是如何解决动画的?他们没有口吃,他们使用增量时间。在某个地方他们必须有一些魔力,但我似乎找不到。非常感谢任何帮助。