27

VideoView コンポーネントを使用してビデオを再生しています。手動で stopPlayback() を呼び出した後、VideoView の表示をクリアできないようです。元の背景が表示されるように VideoView をリセットしたいと思います。

  1. VideoView コンポーネントでビデオを再生します。
  2. 再生する新しいビデオを選択します。
  3. VideoView は、次のビデオが開始されるまで、最初のビデオの最後のフレームにとどまります。次のビデオでエラーが発生した場合、最初のビデオの静止画像はそのまま残ります。
  4. ビデオを完了状態まで再生すると、表示がクリアされます。

私が使用しているコード:

private VideoView videoViewer = null;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
  if (videoViewer != null) {
    videoViewer.setOnPreparedListener(new OnPreparedListener());
  }
...
}

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  if (videoViewer != null) {
    videoViewer.stopPlayback();
    videoViewer.setVideoURI(Uri.parse("http://my_vido_url/playlist.m3u8"));
  }
}

private class OnPreparedListener implements MediaPlayer.OnPreparedListener {
  @Override
  public void onPrepared(MediaPlayer mp) {
    videoViewer.start();
  }
}

VideoView.java ソースに基づいて、stopPlayback() は基礎となる MediaPlayer で次のアクションを実行することに注意してください。

public void stopPlayback() {
  if (mMediaPlayer != null) {
    mMediaPlayer.stop();
    mMediaPlayer.release();
    mMediaPlayer = null;
  }
}
4

6 に答える 6

18

私にとっては、VideoViewusingを非表示にしてから表示するだけでうまくいきましたsetVisibility

public void clearCurrentFrame() {
    videoView.setVisibility(GONE);
    videoView.setVisibility(VISIBLE);
}

VideoViewこれは、単色ではなく透明にしたかったからです。背景を透明に設定しても機能しません。ビデオ フレームは引き続き表示されます。

于 2015-02-12T19:00:48.917 に答える
1

まあ、私にとっては、このスレッドの解決策はどれもうまくいきませんでした。

new Handler().postDelayed(new Runnable() {

     @Override
     public void run() {
        mVideoViewPlayList.setVisibility(View.GONE);
        mVideoViewPlayList.setVisibility(View.VISIBLE);
        mVideoViewPlayList.setVideoURI(Uri.parse(path));
    }
}, 500);
于 2015-05-15T06:41:32.140 に答える