表面视图工件



My layout.xml由一个带有一些TextView和按钮的FrameLayout组成,我像MediaController一样使用它,它还包含一个SurfaceView。在代码中,我创建了一个媒体播放器,并将SurfaceView的SurfaceHolder设置为如下所示的显示:

surfaceView = (SurfaceView) findViewById(R.id.video_surfaceview);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
mediaPlayer.setDisplay(surfaceHolder);

这非常适合显示视频,但是当我尝试调用:

overLayTextView.setVisibility(View.Gone);

overLayTextView仍然可见。我试图检索overLayTextView的视图状态,它被设置为消失。我认为 SurfaceView 直到感觉像(通常在 20+ 秒后发生)才会更新其绘图状态。所以我的问题是,我是否可以在SurfaceView或SurfaceHolder上调用任何东西来通知他们应该"重绘"他们的一些内容?(显然不是视频)。

我刚刚意识到线程使用视频信息更新叠加层仍然称为:

overLayTextView.setText(mediaPlayer.getDuration());

在"无表面"布局中,这无关紧要,因为视图是隐藏的,但在 SurfaceView 中,情况并非如此(至少在某些设备上,奇怪的是)。

希望这有帮助,干杯。

最新更新