2

Android 的 API 15 Animation 类包含以下内容:

public boolean getTransformation(long currentTime, Transformation outTransformation) {
      ... code ...
}

该方法计算增量时间并将其发送到插值器,该插值器又根据动画运行的时间返回一个值,该值又应用于变换。

当我构建自己的自定义视图时,我使用 post(Runnable) 方法,然后调用我的逻辑更新、无效,然后在不满足某些条件时再次 post(Runnable)。逻辑调用需要 1 毫秒,覆盖的 onDraw(Canvas) 也需要 1 毫秒。困扰我的是 invalidate() 调用,它经常使我的增量时间上升到 40 以上的值(40 毫秒是每秒 25 帧),并且不建议获得高于该值的值。使用 delta time 来计算在哪里绘制下一帧通常会卡顿并且是不可能的。我不必使用增量时间,而是依赖手机单独更新视图的速度,使其在不同手机上变得越来越慢,这不是一个好主意。

SurfaceViews 是我无法使用的东西,因为它们的结构与其他视图没有凝聚力(主要是 Z 深度问题)。

现在我的问题是,Android 是如何解决动画的?他们不会口吃,他们使用增量时间。他们一定有某种魔法,但我似乎找不到在哪里。很感谢任何形式的帮助。

4

0 回答 0