什么是Android相关的CADisplayLink(iOS)或CompositionTarget(WP)

hor*_*per 7 android cadisplaylink

我需要更新每帧我的动画,在iOS上我CADisplayLink,对我WinPhone有CompositionTarget,但我要如何做到这一点在Android?

目前我使用的是Timer旁边一个Handler,但我相信有一种方法来同步与刷新率回调.

Fra*_*nov 2

嗯,看起来ViewTreeObserver可能对你有帮助。试试这个代码:

final ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnDrawListener(new ViewTreeObserver.OnDrawListener() {
    @Override
    public void onDraw() {
        // Do whatever you need to do...
    }
});
Run Code Online (Sandbox Code Playgroud)

几点注意事项:

  • onDraw你可以在其中做什么有很多限制。具体来说,您无法修改视图树。如果这是您需要做的事情,请查看ViewTreeObserver.OnPreDrawListener改为查看。
  • 相机预览和媒体播放是在单独的路径上绘制的,并且很可能与此侦听器不同步,因此您无法使用它来与各个帧同步执行操作。

  • 这与“CADisplayLink”不同,因为只有在绘制视图时才会回调,只有在绘制完成*之后*视图无效时才会发生这种情况。相反,在绘制的每个帧上都会调用“CADisplayLink”。为了模仿“CADisplayLink”,我执行了上述操作,并在自定义视图的“onDraw()”方法中调用“invalidate()”。 (3认同)