Gil*_*ert 12 android textureview
我正在使用带有TextureView子项的ListView.TextureView使用MediaPlayer播放视频.当TextureView被回收时,最后一帧保留在曲面上,直到下一个MediaPlayer使用它.
什么是"清除"TextureView表面(例如黑色)的最简单方法,以便不显示旧框架?
经过一段时间的努力,我想出了几个可能的解决方案:
a)使用GLES清除表面.您可以在Grafika中看到一个示例(请查看clearSurface()方法).我个人并不喜欢这个,因为我不认为对黑色的刺激过渡看起来特别好,如果你还没有使用GL代码,这是一个相当大的技术开销.此外,这似乎只适用于API 17+.
b)我选择的解决方案是简单地创建一个新的TextureView,并在每次我想播放视频时将其添加到适当的视图中,而不是重复使用旧视频.我会毫不犹豫地称这是一个很好的解决方案,但这是我能找到的最不可怕的解决方案.
c)如果你再次播放同一个视频,你可以做的一件事就是在播放完毕后尝试寻找视频的第一帧.然后,下一次最后一帧闪烁时,它将不可见,因为它将与视频的开头相同.我在这方面取得了一些成功,但无法让它在所有设备上可靠地工作.它也很明显是一个黑客.
祝你好运,尝试解决这个问题非常令人沮丧.
| 归档时间: |
|
| 查看次数: |
4161 次 |
| 最近记录: |