Ich verwende eine VideoView-Komponente, um Videos abzuspielen. Ich kann die VideoView-Anzeige nicht löschen, nachdem ich stopPlayback() manuell aufgerufen habe. Ich möchte das VideoView so zurücksetzen, dass der ursprüngliche Hintergrund sichtbar ist.Android VideoView clear display nach stopPlayback()
- Ein Video in einer VideoView-Komponente wiedergeben.
- Wählen Sie ein neues Video zum Abspielen.
- Der VideoView bleibt im letzten Frame des ersten Videos hängen, bis das nächste Video startet. Wenn beim nächsten Video ein Fehler auftritt, bleibt das statische Bild aus dem ersten Video dort hängen.
- Wenn ich das Video zum Abschluss-Status abspielen lasse, wird die Anzeige gelöscht.
Der Code Ich verwende:
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();
}
}
Beachten Sie, dass auf der VideoView.java Quelle basiert, stopPlayback() nimmt die folgende Aktion auf dem darunterliegenden Mediaplayer:
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
Wenn Ich mache das, die nächste Wiedergabe zeigt immer noch das letzte Bild des vorherigen. Irgendwelche Ideen, warum das passiert? – slhck
Der tatsächliche Videoframe wird auf einer Oberfläche "unterhalb" des VideoViews gezeichnet. Wenn Sie den Hintergrund auf VideoView einstellen, wird der Rahmen ausgeblendet, aber nicht gelöscht.Wenn der Hintergrund gelöscht ist, ist der alte Rahmen noch vorhanden. – William