Cómo animar un texto FadeOut y FadeIn mientras Textview cambió
-
30-09-2019 - |
Pregunta
Trato de animar un TextView en un changeText Pero siempre se ve un solo sentido de la animación, sólo veo el desvanecimiento
Lo que intento es: beforChange = fadeOut y onChange o después FadeIn
aquí está mi código en el método onCreate de mi actividad:
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);
Creo que hay algo malo en mi código, pero para mi creo que tiene que trabajar.
Lo que tenemos ahora es:? En cada setText el texto modificado solamente FadeOut pero después de que el texto ha cambiado y nunca FadeIn
Solución
TextSwitcher es exactamente lo que busca. Sólo tiene que utilizar su setInAnimation()
y setOutAnimation
. Que las animaciones se ejecutarán automáticamente si cambia el texto de setText()
Otros consejos
Por el aspecto de su código que está diciendo la Vista de Texto a desaparecer después de un cambio en lugar de fundido de entrada.
Además, no estoy seguro de qué tan efectivo será este código como beforeTextChanged se llama a sólo unos momentos antes de que se cambie el texto. Simplemente, no será tiempo suficiente para que cualquier animación que suceda en beforeTextChanged ya que será inmediatamente reemplazado por su código en OnTextChanged
Editar ** Responder al comentario a continuación
Así que para obtener el TextView a desaparecer a continuación, fundido de entrada con nuevos contenidos Me gustaría empezar una animación mediante programación fadeOut lugar de utilizar un Textwatcher. Daría la animación fadeOut un AnimationListener y en animationEnd a continuación, puede establecer el nuevo texto antes de iniciar la animación fadeIn.