2014-01-21 7 views
5

Ich habe eine Listenansicht. Jedes Listenelement in der Listenansicht enthält eine Oberflächenansicht, eine Bildansicht und eine Schaltfläche. Anfangs wird die Sichtbarkeit der Oberflächenansicht weg sein. Nur die Bildansicht und die Schaltfläche sind sichtbar.Verwenden der Oberflächenansicht in der Listenansicht zum Abspielen von Videos

  1. Sobald die Benutzer Taps auf dem Imageview oder die Taste der Surface sichtbar gemacht den Mediaplayer initialisiert und es beginnt das Video auf der Surface spielen. Wenn der Benutzer nach oben und unten scrollt, wird die Sichtbarkeit der Oberflächenansicht erneut geändert (weg). Es wurde nur eine Oberflächenansicht sichtbar gemacht.

  2. Wenn der Benutzer eines der Listenelemente berührt, prüft es, ob ein anderer Mediaplayer bereits existiert, wenn er existiert, wird er freigegeben und der neue Mediaplayer wird mit einer neuen Instanz von Oberflächenansicht initialisiert.

Das funktioniert gut. Aber das Problem ist

Freigeben eines bereits vorhandenen Media Player und Initialisierung neuer Medien Player braucht Zeit (hauptsächlich zwischen den Methoden mediaplayer.prepareasyn() und mediaplayer.start()). Wenn Sie auf das Listenelement tippen und langsam meine Hand entfernen, funktioniert es gut ... ansonsten wird es nicht schnell abgespielt, wenn es sehr schnell angetippt wird.

Aktuelle Lösung

Ich habe versucht, eine postdelay zwischen diesen zwei Methoden anwenden es funktioniert gut. Ich wollte wissen, ob dies der effiziente Weg ist. Oder gibt es andere Wege, auf denen ich schneller reagieren kann?

+0

können Sie Beispielcode oder ein Beispielprojekt zum Abspielen von Videos innerhalb von Listview freigeben? – keybee

+0

@keybee Wenn deine App 4,1 und höher ist, kannst du die Texturansicht ohne Probleme anzeigen –

+0

Hey @PreethiRao hast du das gelöst? Können Sie etwas Code für das gleiche teilen? –

Antwort

0

Ich denke, was Sie tun sollten, ist eine Handler verwenden und verwenden Sie die postDelayed Methode, um den Vorgang zu verzögern, in der Zwischenzeit einen ProgressDialog verwenden, um den Benutzer anzuzeigen, dass Sie das nächste Video laden.

Hope das ist Hilfe.

+0

Das ist, was ich gerade tat .. Ich wollte wissen, gibt es einen anderen effizienten Weg, dies zu tun, ohne die Verzögerungsmethode zu verwenden. –

+0

können Sie versuchen, andere Videos im Hintergrund vorzubereiten, noch bevor der Benutzer darauf klickt. –