2010-04-12 18 views
37

Sto tentando di avviare un'attività con un'animazione di transizione personalizzata. L'unico modo in cui ho scoperto fino a questo punto (senza utilizzare onPendingTransition() nell'attività precedente) consiste nell'utilizzare un tema personalizzato sull'attività e definire activityOpenEnterAnimation, taskOpenEnterAnimation, windowEnterAnimation o windowAnimationStyle per impostare l'animazione. Ma nessuno di questi attributi funziona per me. Alcuni sperimentazione ha prodotto il seguente risultati-Avvia attività con un'animazione

Se ho impostato l'attributo windowAnimationStyle ad un certo stile personalizzato che definisce i valori per activityOpenEnterAnimation, taskOpenEnterAnimation, windowEnterAnimation o windowAnimationStyle posso liberarmi di animazione transizione predefinita che si verificano all'inizio dell'attività. Non mostra l'animazione di transizione utilizzando il valore effettivo specificato, ma almeno l'animazione predefinita non viene mostrata.

Secondo il documento di riferimento here,

devo poter definire un'animazione all'inizio all'attività utilizzando activityOpenEnterAnimation. Ma nessun successo finora.

Qualche idea?

+0

Questa domanda è stata richiesta per ** Android 2.1 (Eclair) **. Non so se il problema si pone o è addirittura rilevante per le versioni successive Froyo/Honeycomb. Non ho modo di scoprirlo. – adityad

risposta

78

Sto usando questo in un mio progetto corrente, è fondamentalmente piuttosto semplice. Si definisce un nuovo stile di animazione nel vostro styles.xml, in questo modo:

<!-- just defines top layer "Animation" --> 
<style name="Animation" /> 

<!-- the animations must have been defined in your "anim" folder, of course --> 
<style name="Animation.MyAwesomeAnimation" parent="android:style/Animation.Activity"> 
    <item name="android:activityOpenEnterAnimation">@anim/myawesomeanimation_enter</item> 
    <item name="android:activityOpenExitAnimation">@anim/hold_long</item> 
    <item name="android:activityCloseEnterAnimation">@anim/hold_long</item> 
    <item name="android:activityCloseExitAnimation">@anim/myawesomeanimation_exit</item> 
</style> 

Poi impostare questo stile in un tema (themes.xml):

<style name="Theme.MyAwesomeTheme" parent="Theme.Default"> 
    <item name="android:windowAnimationStyle">@style/Animation.MyAwesomeAnimation</item> 
</style> 

E allora si può semplicemente impostare questi temi ad ogni attività che ti piace nel tuo AndroidManifest.xml:

<activity 
    android:name=".MyAwesomeActivity" 
    android:theme="@style/Theme.MyAwesomeTheme" /> 

Ora ti auguro un grande divertimento con animazioni di attività! :-D

+25

Dopo 4 ore di esperimenti ho una grande informazione per tutti !: È molto importante attivare le animazioni per il tuo telefono: Impostazioni-> Display-> Animazione e seleziona "tutte le animazioni"! – Informatic0re

+24

Nella mia esperienza si dovrebbe anche derivare dalle animazioni predefinite: '