我的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上调用它来通知他们应该“重绘”他们的一些内容? (显然不是视频)。
答案 0 :(得分:0)
我刚刚意识到线程更新了覆盖视频信息,仍称为:
overLayTextView.setText(mediaPlayer.getDuration());
在“非表面”布局中,这无关紧要,因为View是隐藏的,但在SurfaceView中,情况并非如此(至少在某些设备上,奇怪的是)。
希望这会有所帮助,欢呼。