web-dev-qa-db-fra.com

Commencez l'activité avec une animation

J'essaie de démarrer une activité avec une animation de transition personnalisée. Jusqu'à présent, la seule façon de 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. Certaines expérimentations ont donné les résultats suivants:

Si je définit l'attribut windowAnimationStyle sur un style personnalisé qui définit les valeurs de 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é. Il ne montre pas l'animation de transition 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 ici ,

Je devrais pouvoir définir une animation au début de l'activité en utilisant activityOpenEnterAnimation. Mais aucun succès jusqu'à présent.

Des idées?

40
adityad

J'utilise ceci dans un de mes projets en cours, c'est fondamentalement 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>

Ensuite, définissez ce style dans un thème (themes.xml):

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

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

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

Maintenant, je vous souhaite beaucoup de plaisir avec des animations d'activités! :-RÉ

87
mreichelt