Comment animer un FadeOut et FadeIn tout textView texte modifié
-
30-09-2019 - |
Question
i essayer d'animer un TextView sur un changeText Mais toujours voir une seule direction de l'animation, je ne vois le fadeout
Qu'est-ce que j'essaie est: beforChange = fadeOut et onChange ou après fadein
voici mon code dans la méthode onCreate de mon activité:
final Animation out = new AlphaAnimation(1.0f, 0.0f);
out.setDuration(1000);
final Animation in = new AlphaAnimation(0.0f, 1.0f);
in.setDuration(1000);
bidFirst.setAnimation(out);
bidMiddle.setAnimation(out);
bidLast.setAnimation(out);
TextWatcher bidWatcher = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
in.startNow();
bidFirst.setAnimation(out);
bidMiddle.setAnimation(out);
bidLast.setAnimation(out);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
out.startNow();
bidFirst.setAnimation(in);
bidMiddle.setAnimation(in);
bidLast.setAnimation(in);
}
public void afterTextChanged(Editable s) {
}
};
bidFirst.addTextChangedListener(bidWatcher);
bidMiddle.addTextChangedListener(bidWatcher);
bidLast.addTextChangedListener(bidWatcher);
Je pense qu'il ya quelque chose de mal dans mon code, mais pour mon crois qu'il doit travailler.
Ce que j'est maintenant:? Sur tous setText le texte modifié ne FadeOut mais après le texte a changé et ne FadeIn
La solution
TextSwitcher est exactement ce que vous recherchez. Il suffit d'utiliser leur setInAnimation()
et setOutAnimation
. Que les animations fonctionneront automatiquement si vous modifiez le texte par setText()
Autres conseils
Par l'apparence de votre code que vous dites la TextView à disparaître après un changement plutôt que fondu.
Aussi je ne sais pas comment ce code sera efficace que beforeTextChanged est appelé à quelques minutes avant que le texte est modifié. Il ne sera pas tout simplement assez de temps pour une animation se produire sur beforeTextChanged car il sera instantanément remplacé par votre code dans OnTextChanged
Modifier ** Répondre au commentaire ci-dessous
pour obtenir le textview à disparaître en fondu puis avec du nouveau contenu, je commencer par programme une animation fadeOut plutôt que d'utiliser un Textwatcher. Je donnerais l'animation fadeOut AnimationListener et animationEnd vous pouvez définir le nouveau texte avant de commencer l'animation fadeIn.