40 votes

Démarrer l'activité avec une animation

J'essaie de lancer une activité avec une animation de transition personnalisée. La seule façon que j'ai trouvée jusqu'à présent pour le faire (sans utiliser onPendingTransition() dans l'activité précédente) est d'utiliser un thème personnalisé sur l'activité et de définir soit activityOpenEnterAnimation, taskOpenEnterAnimation, windowEnterAnimation ou windowAnimationStyle pour définir l'animation. Mais aucun de ces attributs ne fonctionne pour moi. Quelques expérimentations ont donné les résultats suivants

Si je fixe l'attribut windowAnimationStyle à un style personnalisé qui définit des valeurs pour activityOpenEnterAnimation, taskOpenEnterAnimation, windowEnterAnimation ou windowAnimationStyle, je peux me débarrasser de l'animation de transition par défaut qui se produit au début de l'activité. L'animation de transition ne s'affiche pas en utilisant la valeur réelle spécifiée, mais au moins l'animation par défaut n'est pas affichée.

Selon le document de référence aquí ,

Je devrais pouvoir définir une animation au début de l'activité en utilisant activityOpenEnterAnimation. Mais rien n'y fait jusqu'à présent.

Des idées ?

87voto

mreichelt Points 6217

Je l'utilise dans le cadre d'un de mes projets actuels, c'est assez simple. Vous définissez un nouveau style d'animation dans votre styles.xml, comme ceci :

<!-- 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>

Définissez ensuite ce style dans un thème (themes.xml) :

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

Ensuite, vous pouvez simplement définir ces thèmes pour chaque activité que vous souhaitez dans votre AndroidManifest.xml :

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

Je vous souhaite maintenant de vous amuser avec les animations d'activités ! :-D

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X