Wie kann man vermeiden Android Live Wallpaper pausieren, während Einstellungen Aktivität geöffnet ist, wenn GLSurfaceView mit

StackOverflow https://stackoverflow.com/questions/4469267

Frage

Ich bin ein 3D-Live-Wallpaper für das Schreiben von Android mit dem berühmten GLSurfaceView Wrapper (http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers)

Wenn ich die Einstellungsbildschirm zu ändern Tapete Einstellungen öffnen, werden die Einstellungen als transparent angezeigt über meine Tapete Vorschau. Das ist gut, weil es lässt mich die Einstellungen Änderungen in einer Vorschau die ich mache. Dies funktioniert gut, außer für ein Problem: Die Live-Wallpaper, so lange pausiert, da die Einstellungen auf der linken Seite davon

Wie kann ich meine Tapete Pausieren vermeiden?

War es hilfreich?

Lösung

Ich kam mit einer Vermeidung des Problems auf, die nützlich sein könnten, je nachdem, wie Sie Ihre Tapete Funktionen ...

In meinen Einstellungen Aktivität, wenn der Benutzer eine Änderung vornimmt (z bewegt einen Schieber, prüft ein Kontrollkästchen), Broadcast ich eine Intent mit den entsprechenden Einstellungen Informationen.

In der onCreate Methode Live-Wallpaper, ich registrieren dynamisch eine BroadcastReceiver diese Einstellungen Ereignisse zu empfangen. Ich austragen diesen Receiver in onDestroy.

Wenn Sie ein Einstellungs Rundfunk-Empfang, mache ich die Tapete ein einzelnes Bild mit den neuen Einstellungen ziehen. Da die Einstellungen Aktivität transparent ist, gibt dies sofort den Benutzer eine Vorstellung davon, was die Tapete wie mit den gewählten Einstellungen aussehen wird.

In ähnliche Weise mit diesem Ansatz, könnten Sie die Tapete zu animieren für ein paar Sekunden nach dem Einstellung ändern planen -. Oder was auch immer ist für die Implementierung

Andere Tipps

Ich fand das ein bisschen ärgerlich zu sein als gut. Ich abgewendet das Problem ganz einfach durch finish() in meine Einstellungen Aktivität aufrufen, wenn eine Änderung vorgenommen wird. Dies ermöglicht eine sofortige, vollständige Vorschau der Tapete für den Benutzer. Es dauert nur einen Klick in die Einstellungen zurück zu gehen, um eine weitere Änderung vornehmen und es macht einen ziemlich nett User Experience.

 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
       finish();
 }

Früher habe ich dies in meiner Linie von Tapeten. Hier ist ein Beispiel:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top