Android Animation De Scintillement
J'ai été le chalutage par le biais aussi de nombreux fils sur ce sujet que je peux trouver sur le scintillement qui se pose dans Android 2.2 lorsque vous traitez avec AnimationListeners, mais je n'arrive pas à résoudre mon problème.
Ce que j'ai est un LinearLayout 'liste' que l'utilisateur touche de déplacement vers le bas d'environ 100 pixels, et touche à nouveau pour le déplacer vers le haut. J'ai enfin travailler sur la première partie, sans scintillement (grâce à la suggestion d'appel clearAnimation() sur la vue animée), mais en faisant l'inverse (c'est à dire, le déplacement de la vue arrière vers le haut), il y a un scintillement au début. Je ne peux pas vraiment appeler clearAnimation() dans le onAnimationStart() la méthode que de ne pas les animer!
Bien sûr, toutes les animations fonctionne parfaitement, si j'ai utilisé setFillAfter() sans aucune animation à l'écoute, mais le point de vue de la zone tactile ne bougera pas (parce que la vue elle-même n'a pas "réellement" déplacé).
Toute aide serait grandement appréciée.
this.popoverTab.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
popoverTab.setClickable(false);
popoverTab.setFocusable(false);
if (popoverHidden) {
Log.d(TAG, "About to show popover");
//the popover is currently hidden, show it.
TranslateAnimation animation = new TranslateAnimation(0, 0, 100, 0);
animation.setDuration(700);
animation.setFillBefore(true);
animation.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
footer.layout(footer.getLeft(), (footer.getTop() - 100), footer.getRight(), footer.getBottom());
}
});
footer.startAnimation(animation);
} else {
Log.d(TAG, "About to hide popover");
//the popover is showing, hide it.
TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 100);
animation.setDuration(700);
animation.setFillAfter(true);
animation.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
footer.clearAnimation();
footer.layout(footer.getLeft(), (footer.getTop() + 100), footer.getRight(), footer.getBottom());
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
}
});
footer.startAnimation(animation);
}
//invert.
popoverHidden = !popoverHidden;
popoverTab.setClickable(true);
popoverTab.setFocusable(true);
}
});
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème et après quelques jours, j'ai trouvé la solution ... merci à:
http://www.mail-archive.com/[email protected]/msg67535.html
Cela a fonctionné pour moi.
Vous ne devriez pas avoir à utiliser
clearAnimation()
suronAnimationEnd()
.Essayez ceci:
setFillBefore(true)
etsetFillAfter(true)
sur les deux animationsJ'ai cherché tous les stackoverflow postes, pour le problème d'animation (flicker et lent).
Je n'ai pas trouver aucune réponse parfaite. Mais j'ai trouvé la solution pour le même, qui est comme ci-dessous,
démarrage de l'Animation, de l'utilisation, de
onEnd de l'Animation, de l'utilisation, de
Maintenant mon point de vue n'a pas de scintillement ou le comportement léthargique lorsque mon point de vue est d'animer.
Il fonctionne bien pour moi.
Alrite, j'ai eu le même problème qui m'a fait chercher pour elle, j'ai fini dans ce post. Trouvé une solution pour mon problème, la pensée de partager ma solution.
J'ai eu de nombreuses animations en cours d'exécution, mais le scintillement commencé que récemment, mais quand j'ai tracé le problème constaté que le scintillement est survenue après l'élaboration de la liste des animations en vertu d'un pour boucle. (tableau Liste)
J'ai simplement ajouté try catch pour éviter le problème après la localisation, le problème; certaines animations ont été retirés à la volée, mais il n'y avait pas assez de temps pour un fil de mise à jour, de sorte que la boucle a toujours essayé et échoué, mais pas affichés à la place, il vacillait, mais en vertu de try et catch sur la liste de tableau dessin fixe mon problème.
J'ai fait face à la même erreur, mais il n'est apparu que dans certains points de vue, bien que tous avaient la même mise en œuvre. Comme il s'est avéré, il s'est passé pour deux raisons:
android:animateLayoutChanges="true"
dans mon élément xml racineDonc, deux solutions, soit supprimer le
android:animateLayoutChanges="true"
tag (suggéré puisque vous ne l'utilisez pas), ou utiliser un wrapper Disposition autour de la problématique de la vue! Ainsi, au lieu de:ne