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 中,情况并非如此(至少在某些设备上,奇怪的是)。
希望这有帮助,干杯。