2012-07-12 10 views
15

Estoy haciendo una aplicación de galería de imágenes. Tengo una vista de imagen con una vista de texto en la parte inferior. Actualmente es solo semitransparente. Quiero hacer que se desvanezca, espere 3 segundos, luego desaparezca un 90%. Al enfocarlo o al cargar una nueva imagen, se repetirá el ciclo. He leído a través de una docena de páginas y he intentado algunas cosas, sin éxito. Todo lo que obtengo es un fundido de entrada y un fundido instantáneoAnimación de TextView: atenuar, esperar, atenuarse

+0

¿Todavía no hay nada? –

Respuesta

3

Puede utilizar un objeto de animación adicional (que no modifica su alfa) para evitar el fundido instantáneo, establecer animationListener para su efecto de fundido de entrada e iniciar el objeto de animación adicional en la animación en fin del fundido de entrada , a continuación, se inicia el fundido de salida en el extremo animación del objeto de animación adicional, probar el enlace de abajo, que va a ayudar ..

Auto fade-effect for textview

39
protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f) ; 
protected AlphaAnimation fadeOut = new AlphaAnimation(1.0f , 0.0f) ; 
txtView.startAnimation(fadeIn); 
txtView.startAnimation(fadeOut); 
fadeIn.setDuration(1200); 
fadeIn.setFillAfter(true); 
fadeOut.setDuration(1200); 
fadeOut.setFillAfter(true); 
fadeOut.setStartOffset(4200+fadeIn.getStartOffset()); 

Funciona perfectamente para fondos blancos. De lo contrario, debe cambiar los valores cuando crea una instancia de la clase AlphaAnimation. De esta manera:

AlphaAnimation fadeIn = new AlphaAnimation(1.0f , 0.0f); 
AlphaAnimation fadeOut = new AlphaAnimation(0.0f , 1.0f); 

Esto funciona con fondo negro y color de texto blanco.

2

esa es la solución que he utilizado en mi proyecto para recorrer la decoloración -in/fade-out animación en TextViews:

private void setUpFadeAnimation(final TextView textView) { 
    // Start from 0.1f if you desire 90% fade animation 
    final Animation fadeIn = new AlphaAnimation(0.0f, 1.0f); 
    fadeIn.setDuration(1000); 
    fadeIn.setStartOffset(3000); 
    // End to 0.1f if you desire 90% fade animation 
    final Animation fadeOut = new AlphaAnimation(1.0f, 0.0f); 
    fadeOut.setDuration(1000); 
    fadeOut.setStartOffset(3000); 

    fadeIn.setAnimationListener(new Animation.AnimationListener(){ 
     @Override 
     public void onAnimationEnd(Animation arg0) { 
      // start fadeOut when fadeIn ends (continue) 
      textView.startAnimation(fadeOut); 
     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
     } 

     @Override 
     public void onAnimationStart(Animation arg0) { 
     } 
    }); 

    fadeOut.setAnimationListener(new Animation.AnimationListener(){ 
     @Override 
     public void onAnimationEnd(Animation arg0) { 
      // start fadeIn when fadeOut ends (repeat) 
      textView.startAnimation(fadeIn); 
     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
     } 

     @Override 
     public void onAnimationStart(Animation arg0) { 
     } 
    }); 

    textView.startAnimation(fadeOut); 
} 

¡Espero que esto ayude!

Cuestiones relacionadas