Aktivitätslayout neu konfigurieren, um Video im Vollbildmodus abzuspielen, wenn der Bildschirm gedreht wird

8

In einer Aktivität habe ich ein Video-Widget eingebettet (VideoView oder MediaPlayer, das einem SurfaceView zugeordnet ist), dessen Größe angepasst werden sollte, wenn der Bildschirm gedreht wird. Diese Aktivität wird als Inhalt in einem TabHost verwendet.

Mein aktueller Ansatz

Um die Bildschirmdrehung zu handhaben, habe ich zwei Layouts für Hochformat und Querformat (in den Ordnern ./res/layout und ./res/layout-land) zur Verfügung gestellt.

Problem dieses Ansatzes ist, dass eine neue Aktivität für jede Rotation erstellt wird, so dass ich nicht den gleichen MediaPlayer (oder VideoView) = & gt; Ich starte das Video von Anfang an, wenn ich den Bildschirm rotiere. Da das Video vom Internet gestreamt wird, gibt es keine Möglichkeit, die Position im Video zu speichern, um diese Position zu suchen, wenn das Video in der anderen Aktivität neu gestartet wird.

Was ich gerne tun würde

Ich muss in der Lage sein, Ansichten zu translatieren / zu skalieren / auszublenden, wenn der Bildschirm gedreht wird. Bei der Übersetzung / Skalierung muss die Layoutorganisation beibehalten werden, damit das Layout an die verschiedenen Bildschirmgrößen angepasst werden kann.

Meine Fragen

  • Wie werden Ansichten in die obere linke Position des Bildschirms übersetzt / verschoben?
  • Wie kann man die Ansicht außerhalb des Bildschirms ausblenden / übersetzen, um eine Ansicht verschwinden zu lassen?
  • Wie skaliere / verändere ich die Ansicht, um ihre Größe an den verfügbaren Platz anzupassen?

  • Welche Schnittstelle, Callback muss ich implementieren, um über die Bildschirmdrehung benachrichtigt zu werden, um diese Transformationen auszulösen?

Bertrand 08.03.2011, 08:33
quelle

1 Antwort

9

Ich finde endlich den guten Weg, es zu tun. In der Android-Dokumentation wird angegeben, dass Sie, wenn Sie Änderungen (Ausrichtung, Tastatur, ...) ohne erneute Erstellung einer neuen Aktivität bearbeiten müssen, dies tun sollten, indem Sie die onConfigurationChanged-Methode der Activity-Klasse überschreiben. Sie müssen in der Manifestdatei Ihrer Aktivität Änderungen vornehmen, die Sie für sinnvoll halten.

Weitere Informationen zu diesem finden Sie hier .

In meinem Fall sieht mein Aktivitätsmanifest so aus:

%Vor%

Und innerhalb meiner MyActivity-Aktivität habe ich die folgende Methode hinzugefügt:

%Vor%

mit dem folgenden Layout für meine Aktivität:

%Vor%

Auf diese Weise wird, wenn ich die TabWidget-Leiste ein- / ausgeblendet habe, die Videoansicht (die zum Inhalt der TabHost hinzugefügt wird, in der Größe angepasst und im Querformat habe ich den Vollbildmodus, um den Film anzusehen.

Ich hoffe, es wird einigen von euch helfen.

    
Bertrand 08.03.2011, 12:58
quelle