Come evitare la pausa Android Live Wallpaper mentre l'attività delle impostazioni è aperta quando si utilizza GLSurfaceView
-
11-10-2019 - |
Domanda
Sto scrivendo un 3d live wallpaper per Android utilizzando l'involucro famoso GLSurfaceView (http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers)
Quando ho aperto la schermata delle preferenze per modificare le impostazioni di carta da parati, le impostazioni sono visualizzate come trasparente sopra la mia carta da parati anteprima. Questo è un bene, perché mi permette di visualizzare in anteprima le modifiche delle impostazioni che faccio. Questa grande opera, ad eccezione di un problema:! La carta da parati dal vivo è in pausa fino a quando le impostazioni sono su di esso
Come posso evitare la mia carta da parati pausa?
Soluzione
mi si avvicinò con una soluzione che potrebbe essere utile, a seconda di come le funzioni di carta da parati ...
Nella mia attività impostazioni, ogni volta che l'utente apporta una modifica (ad esempio si muove un cursore, assegni una casella di controllo), io trasmettere un Intent
con le pertinenti informazioni sulle impostazioni.
Nel metodo onCreate
della carta da parati dal vivo, ho dinamicamente registrare un BroadcastReceiver
per ricevere questi eventi impostazioni. Ho annullare la registrazione questo ricevitore in onDestroy
.
Quando si riceve una trasmissione impostazioni, io faccio la carta da parati disegnare un singolo fotogramma con le nuove impostazioni. Come l'attività delle impostazioni è trasparente, questo dà immediatamente l'utente un'idea di ciò che la carta da parati sarà simile con le impostazioni selezionate.
Allo stesso modo, utilizzando questo approccio, si potrebbe pianificare la carta da parati per animare per un paio di secondi dopo un cambiamento impostazioni -. O tutto ciò che è appropriato per la propria implementazione
Altri suggerimenti
Ho trovato questo per essere un pò fastidioso pure. Ho scongiurato il problema del tutto semplicemente chiamando finish()
nella mia attività impostazioni ogni volta che viene apportata una modifica. Questo permette per un istante, anteprima completa della carta da parati per l'utente. Ci vuole solo un click per tornare nelle impostazioni di fare un altro cambiamento e si fa per un piuttosto piacevole esperienza utente.
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
finish();
}
Ho usato questo nella mia linea di carte da parati. qui un esempio: