studio android animation alpha fadein fadeout

studio - fade in android animation



Android fadein fadein animaciĆ³n fadein con retrasos (2)

Hay una solución más simple para esto.

Supongamos que su vista está en el estado GONE. Para animar a su visibilidad:

yourView.setVisibility(View.VISIBLE); yourView.animate().alpha(1).setDuration(300);

De la misma manera, puede agregar oyentes de animación.

Esto también funciona para animaciones de escala y traducción.

Quiero hacer una animación alfa muy simple, pero no puedo encontrar una manera válida.

La idea es realizar esta animación sobre una vista:

  1. alfa de 0 a 1 de 1 segundo
  2. mantener alfa en 1 durante 5 segundos
  3. alfa de 1 a 0 de 1 segundo
  4. mantener alfa en 0 durante 5 segundos.
  5. comenzar de nuevo en 1.

Intenté implementar eso con un AnimationSet como:

AnimationSet animationSet = new AnimationSet(true); Animation animation1 = new AnimationUtils.loadAnimation(this, android.R.anim.fade_in); animation1.setDuration(1000); Animation animation2 = new AnimationUtils.loadAnimation(this, android.R.anim.fade_out); animation2.setDuration(1000); animation2.setStartOffset(5000); Animation animation3 = new AlphaAnimation(0.0f, 0.0f); animation3.setDuration(4000) animation3.setStartOffset(6000); animationSet.add(animation1); animationSet.add(animation2); animationSet.add(animation3);

etc.

pero parece que la tercera animación hace un desastre con todas las animaciones alfa, supongo que esto causa una incoherencia interna en la forma en que Android administra este tipo de animación.

¿Alguna idea?

Gracias.


Ok, ten en cuenta estos 2 puntos para resolver esto

  • Si quiero animar 1.0f to 0.0f después de 5 segundos con una duración de animación de 1 segundo, esto es en última instancia una animación de 1 segundo con una pausa de 5 segundos.

    Para lograr esto:

    1. setDuration(1000) (tiene una duración de 1 segundo)
    2. setStartOffset(5000) (comenzará después de 5 segundos)
  • Solo necesitas 2 animaciones que se repetirán para siempre.

    1. 0.0f to 1.0f con 5 segundos de pausa y 1 segundo de duración

    2. 1.0f to 0.0f con 5 segundos de pausa y 1 segundo de duración

Y aquí está el código:

animation1 = new AlphaAnimation(0.0f, 1.0f); animation1.setDuration(1000); animation1.setStartOffset(5000); animation2 = new AlphaAnimation(1.0f, 0.0f); animation2.setDuration(1000); animation2.setStartOffset(5000); textView.startAnimation(animation1);

Sin embargo, para usarlo siempre usaré AnimationListener porque repeatCount tiene errores:

animation1 = new AlphaAnimation(0.0f, 1.0f); animation1.setDuration(1000); animation1.setStartOffset(5000); //animation1 AnimationListener animation1.setAnimationListener(new AnimationListener(){ @Override public void onAnimationEnd(Animation arg0) { // start animation2 when animation1 ends (continue) textView.startAnimation(animation2); } @Override public void onAnimationRepeat(Animation arg0) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation arg0) { // TODO Auto-generated method stub } }); animation2 = new AlphaAnimation(1.0f, 0.0f); animation2.setDuration(1000); animation2.setStartOffset(5000); //animation2 AnimationListener animation2.setAnimationListener(new AnimationListener(){ @Override public void onAnimationEnd(Animation arg0) { // start animation1 when animation2 ends (repeat) textView.startAnimation(animation1); } @Override public void onAnimationRepeat(Animation arg0) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation arg0) { // TODO Auto-generated method stub } }); textView.startAnimation(animation1);