Come evitare la pausa Android Live Wallpaper mentre l'attività delle impostazioni è aperta quando si utilizza GLSurfaceView

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

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?

È stato utile?

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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top