1

私のlayout.xmlは、MediaControllerのように使用するいくつかのTextViewとButtonを備えたFrameLayoutで構成されており、SurfaceViewも含まれています。コードでは、MediaPlayerを作成し、SurfaceViewのSurfaceHolderを次のようにディスプレイとして設定します。

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

I just realized the thread updating the overlays with video info still called :

overLayTextView.setText(mediaPlayer.getDuration());

In "none-surface" layouts this doesn't matter since the View is hidden but in SurfaceView this is apparantly not the case (at least on some devices, strangely enough).

Hope this helps, cheers.

于 2012-06-12T10:18:59.690 に答える