在Android中将多个窗口与多个视图同步

时间:2013-11-06 16:15:35

标签: android multithreading animation synchronization window

我有一个同时显示两个窗口的应用程序。窗口A显示SurfaceView,窗口B显示视图。每个窗口(自然地)具有与该窗口相关联的自己的表面。目前只有Window A在屏幕上显示SurfaceView,而Window B不显示任何内容。 我想在两个窗口之间切换,没有用户注意到任何闪烁,或者同时看到两个窗口。总之,我想达到以下效果:

  • 窗口A - >隐藏SurfaceView A

  • 窗口B - >显示视图B

两者都在同一时间发生。

我面临的问题是,无论我尝试同步显示器有多难,每个窗口都会在稍微不同的时间范围内显示/隐藏其视图,导致屏幕上显示闪烁或两个视图。

我尝试过以下方法:

  • 主题A - >隐藏视图A - >准备绘图(lockCanvas),并停止(等待)线程,直到收到信号。

  • 主题B(UI主题) - >显示SurfaceView B - >覆盖视图的draw,发出信号线A以释放自身,然后绘制。

  • 主题A - >接收信号并在屏幕上绘图(unlockAndPostCanvas

在实践中,我得到了不一致的结果,并且两个窗口并不总是同步。有时我可以看到一个框架并排显示两个视图,有时我可以看到一个没有视图的框架。我甚至尝试使用Choreographer.postFrameCallback使两个窗口在下一帧上更改其显示,但同样,我无法实现完全同步。

任何人都有其他想法吗?

0 个答案:

没有答案