我正在编写一个显示过场动画的应用程序。目前,它的工作方式是(因为表面视图/视频视图通常不能相互叠加)我在应用程序运行时从布局中删除了 VideoView。然后,当我想显示过场动画时,我将 VideoView 添加回布局中,一旦动画准备好播放,删除 SurfaceView(如果操作正确,在视频开始之前没有“黑色闪光”。这个工作成功。)但是,当视频结束时,我可以做以下两件事之一:
- 移除 VideoView,然后将 SurfaceView 添加回布局。这会导致在添加 SurfaceView 时屏幕上出现黑色闪烁。
- 重新添加 SurfaceView,然后在 SurfaceView 准备好渲染后移除 VideoView。
同样,我选择了第二个选项来消除屏幕上的黑色闪光。但是,这会导致不同的问题。出于某种原因,在 VideoView 开始播放后,如果在其画布上添加 SurfaceView 的顶部,则会出现从上到下沿屏幕向下延伸的深色垂直条纹。
一旦 VideoView 被移除,条纹就会消失。然而,可以理解的是,在 SurfaceView 被添加回来和 VideoView 被从布局中删除之间大约有四分之一秒左右的延迟时间。在此期间,条纹清晰可见。
有没有办法解决?
请注意,我使用 Vitamio 来渲染 AVI 视频。