我需要更新我的动画每帧,在iOS上我有CADisplayLink
,在WinPhone上我有CompositionTarget
,但我该怎么做呢?
目前我在Timer
旁边使用了Handler
,但我相信有一种方法可以将回调与刷新率同步。
答案 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
而不是。