我需要更新每帧动画,在 iOS 上我有CADisplayLink
,在 WinPhone 上我有CompositionTarget
,但我如何在 Android 上做到这一点?
目前我正在使用 a Timer
,Handler
但我相信有一种方法可以将回调与刷新率同步。
我需要更新每帧动画,在 iOS 上我有CADisplayLink
,在 WinPhone 上我有CompositionTarget
,但我如何在 Android 上做到这一点?
目前我正在使用 a Timer
,Handler
但我相信有一种方法可以将回调与刷新率同步。
我所知道的最直接的等价物是Choreographer
(从 API 16 开始)。
看起来您的动画编写方式决定了同步它的最佳方式。编舞一般用处不大。ViewPropertyAnimator
如果您的动画是在 AFAIK 包含的“动画框架”之外编写的,并且......也许是 XML 定义的动画,Choreographer 会很有用?究竟是什么是无证的。
Choreographer
看起来它主要用于同步GLSurfaceView
动画。
嗯,看起来ViewTreeObserver
可能会帮助你。试试这个代码:
final ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnDrawListener(new ViewTreeObserver.OnDrawListener() {
@Override
public void onDraw() {
// Do whatever you need to do...
}
});
几点注意事项:
onDraw
您可以在其中做什么有很多限制。具体来说,您不能修改视图树。如果这是您需要做的事情,请查看ViewTreeObserver.OnPreDrawListener
。