2013-01-20 12 views
20

Ho uno sfondo impostato per tutte le attività dell'app utilizzando il parametro "android: background" negli stili e l'impostazione del tema dell'applicazione per il collegamento a questo stile.Qual è la differenza tra windowBackground e lo sfondo per lo stile di attività?

Tutto ha funzionato bene, fino a quando non ho notato che per una finestra di dialogo con un elenco di elementi, rende ogni elemento avere le dimensioni dello sfondo.

Dopo aver modificato il parametro utilizzato per "android: windowBackground", sembra che funzioni anche in questo caso.

Perché si verifica? Qual è la differenza tra i due?

Inoltre, impostare "android: windowBackground" su @null come written here fornisce lo stesso aumento di velocità dell'utilizzo di "android: background"?

risposta

23

android:background è il colore di sfondo (disegnabile per essere precisi) di un componente di vista mentre android:windowBackground è il colore di sfondo della finestra (attività o finestra di dialogo) in cui risiede la vista.

Per impostazione predefinita le viste sono trasparenti (ovvero senza colore di sfondo) in modo visivo in modo che sembrino prendere il colore dalla finestra sottostante.

Nota come l'articolo che hai collegato menziona impostando lo windowBackground su null e non lo sfondo per le visualizzazioni a schermo intero. Questa è una tecnica comune per evitare i prelievi.

Ma lo stesso principio può essere applicato alle viste se si dispone di una vista che nasconde completamente l'altra vista.

Esempio: gist.github.com/floatingmonkey/5474959

+0

Allora perché l'attività/applicazioni hanno l'androide: sfondo, se effettivamente imposta per ciascuna delle sue opinioni? non capisco il suo scopo. Inoltre è possibile impostare un'immagine come sfondo e non solo un colore. Inoltre, fissa la confusione dell'articolo. –

+0

puoi passare qualsiasi android valido: qualunque sia l'attributo a qualsiasi componente. semplicemente ignorerà l'attributo se non si applica per quel componente. (questo può essere fonte di confusione ma è come Android garantisce la compatibilità con le versioni precedenti). anche sì è possibile passare immagini, colori o qualsiasi altro drawable (sfumatura, forma e animazione) come valore per lo sfondo e windowBackground. –

+0

ma non riesco ancora a capire come mai usare un'immagine su Android: lo sfondo su un'attività/applicazione fa sì che tutto lo usi, anziché solo lo sfondo dell'attività e perché esiste persino lì se ha un comportamento così strano. puoi provare anche questo test: crea una nuova app Hello World e imposta il tema che è stato creato per te per utilizzare questo attributo con un'immagine. noterai che molte viste sull'attività useranno ora questo sfondo. –