J'ai actuellement une vue dans mon application Android et cette vue lit une animation par cadre. Je souhaite animer la vue pour augmenter sa taille à 150%. Lorsque j'applique une animation d'échelle et que l'animation est terminée, je souhaite que la vue reste à cette nouvelle taille pour le reste du cycle de vie de l'activité. Malheureusement, à l'heure actuelle, lorsque l'animation d'échelle est terminée, la vue revient à la taille d'origine. Comment puis-je l'obtenir pour conserver la nouvelle transformation animée?
J'utilise
myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));
Merci!
Assurez-vous d’ajouter les attributs ci-dessous au élément racine dans votre animation xml:
Android:fillAfter="true"
Android:fillEnabled="true"
essayez de construire l'animation à partir de code et de définir les propriétés comme ceci
anim.setFillEnabled(true);
anim.setFillAfter(true);
si vous voulez mettre votre animation dans un fichier XML , il vous faudra peut-être ceci pour vous aider:
<set
Android:fillEnabled="true"
Android:fillAfter="true"
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<translate
Android:fromYDelta="0"
Android:toYDelta="-20%p"
Android:duration="7000" />
</set>
https://stackoverflow.com/a/6519233/371749
s'il vous plaît également apprécier l'autre réponse, m'a aidé :) bonne chance!
De nos jours, c'est devenu très facile:
view.animate().x(valueX).y(valueY).setDuration(500).start();
(Dans cet extrait, ViewPropertyAnimator a été utilisé).
Il est possible d'ajouter plusieurs autres options non plus.
La vue sera située dans la nouvelle position.
EDIT: La réponse de Qlimax est meilleure, mais comme le PO n’est pas revenu pour changer de coche et que je ne peux pas supprimer une réponse acceptée, je la recopierai ici: définissez simplement fillAfter = true fillEnabled = true
Ma réponse initiale (qui fonctionne mais qui est légèrement ridicule par comparaison) est la suivante:
Pour que les choses fonctionnent comme prévu après l'animation, au moins selon ce fil , vous devrez écrire un gestionnaire onAnimationEnd
, puis ajuster manuellement le "réel" ( -transformation) de votre vue pour correspondre au résultat final de l'animation de la balance.
En fait, l'animation que vous utilisez semble être intégrée dans le cadre Android), et je ne suis pas sûr que vous puissiez y changer quoi que ce soit.
Cependant, vous pouvez créer votre propre animation en suivant l'exemple dans la documentation . Et vous devrez mettre Android: fillAfter = "true" si vous voulez que la mise à l'échelle soit conservée après la fin de l'animation.
Mettez Android: fillAfter = "true" dans la balise SET, car les placer dans la balise animation les confinera aux "paramètres de transition" ou à "pendant/tout en animant des paramètres". Les paramètres du SET appliqueront la transformation que vous recherchez une fois les animations terminées.