Wie kann man vermeiden Android Live Wallpaper pausieren, während Einstellungen Aktivität geöffnet ist, wenn GLSurfaceView mit
-
11-10-2019 - |
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?
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: