为VideoView设置背景颜色会隐藏视频

7

我在我的应用中使用了VideoView组件,但是当我通过布局属性或代码来设置背景颜色时,这个背景颜色会覆盖我的视频,导致我看不到视频。

3个回答

4

VideoView继承自SurfaceView,它依赖于PorterDuff.Mode.CLEAR来在视图层次结构中切一个洞,以便您可以看到底部的本地渲染表面。如果您让它填充一个实心颜色,您将无法看到视频。当视频正在播放时,您将无法看到背景,因此我假设您希望在没有视频时使用不同的颜色。在这种情况下,使用MediaPlayerOnCompletionListener来改变事物...也许切换视图或扩展VideoView并覆盖draw,使其在播放时调用超类方法,并在其他时间执行不同的操作。


1
你可以这样做:

VideoView videoView = findViewById(R.id.videoView);

videoView.setZOrderOnTop(true);

0

我的解决方案是像往常一样将背景色设置好,并在准备就绪时寻找第一个帧并清除背景,也就是所谓的。

videoView.setOnPreparedListener(
    mp -> {
      videoView.seekTo(1);
      videoView.setBackground(null);
    });

但是,已知问题是会出现黑屏闪烁...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接