2012-07-12 8 views
15

Sto realizzando un'app per le gallerie di immagini. Attualmente ho una visione d'immagine con una vista testuale in basso. Attualmente è solo semitrasparente. Voglio farlo dissolvenza, attendere 3 secondi, quindi svanire del 90%. Concentrandosi su di esso o caricando una nuova immagine, si ripeterà il ciclo. Ho letto attraverso una dozzina di pagine e ho provato alcune cose, senza successo. Tutto ciò che ottengo è una dissolvenza in apertura e dissolvenza immediataAnimazione TextView - dissolvenza in entrata, attesa, dissolvenza

+0

Ancora niente ???? –

risposta

3

È possibile utilizzare un oggetto di animazione aggiuntivo (che non modifica l'alfa) per impedire la dissolvenza istantanea, impostare animationListener per l'effetto di dissolvenza in apertura e avviare l'oggetto di animazione extra nell'animazione onEnd della dissolvenza in apertura , poi si inizia fade-out sull'estremità animazione dell'oggetto di animazione in più, provare sul link qui sotto, ti aiuto ..

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()); 

Funziona perfettamente per sfondi bianchi. Altrimenti, è necessario cambiare i valori quando si istanzia la classe AlphaAnimation. In questo modo:

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

Questo funziona con sfondo nero e colore del testo bianco.

2

Questa è la soluzione che ho usato nel mio progetto per il looping dissolvenza -in/fade-out animazione su 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); 
} 

Spero che questo possa aiutare!