SurfaceView工件

时间:2012-06-10 16:07:15

标签: android surfaceview visual-artifacts

我的layout.xml包含一个带有几个TextViews和Buttons的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上调用它来通知他们应该“重绘”他们的一些内容? (显然不是视频)。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到线程更新了覆盖视频信息,仍称为:

overLayTextView.setText(mediaPlayer.getDuration());

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

希望这会有所帮助,欢呼。