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

时间:2013-01-25 09:18:10

标签: android cadisplaylink

我需要更新我的动画每帧,在iOS上我有CADisplayLink,在WinPhone上我有CompositionTarget,但我该怎么做呢?

目前我在Timer旁边使用了Handler,但我相信有一种方法可以将回调与刷新率同步。

2 个答案:

答案 0 :(得分:3)

我所知道的最直接的等价物是Choreographer(自API 16起)。

看起来您的动画编写方式决定了同步它的最佳方式。编舞通常不是很有用。如果您的动画是在"动画框架之外编写的,那么编舞很有用。哪个AFAIK包含ViewPropertyAnimator和...可能是XML定义的动画?究竟什么是无证件。

Choreographer看起来主要用于同步GLSurfaceView动画。

答案 1 :(得分:2)

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

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

几个笔记:

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