1

我的 layout.xml 包含一个带有一些 TextView 和 Button 的 FrameLayout,我像 MediaController 一样使用它,它还包含一个 SurfaceView。在代码中,我创建了一个 MediaPlayer 并将 SurfaceView 的 SurfaceHolder 设置为 Display,如下所示:

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

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

overLayTextView.setVisibility(View.Gone);

overLayTextView 仍然可见。我试图检索 overLayTextView 的视图状态,并将其设置为 Gone。我认为 SurfaceView 直到感觉像(通常发生在 20 多秒后)才会更新其绘图状态。所以我的问题是我是否可以调用 SurfaceView 或 SurfaceHolder 来通知他们应该“重绘”他们的一些内容?(显然不是视频)。

4

1 回答 1

0

我刚刚意识到使用视频信息更新覆盖的线程仍然称为:

overLayTextView.setText(mediaPlayer.getDuration());

在“非表面”布局中,这无关紧要,因为 View 是隐藏的,但在 SurfaceView 中显然不是这种情况(至少在某些设备上,这很奇怪)。

希望这会有所帮助,干杯。

于 2012-06-12T10:18:59.690 回答