2016-07-15 12 views
0

Ich benutze diese Methode jede Ansicht zu zeigen, dass eine verblassen in oder ein AusblendungAnimation benötigen.Fade in nicht funktioniert, aber Animation, funktioniert auf Android fade out

Es funktioniert perfekt, wenn ich falsch passieren die Fade-Out-Animation auszuführen, aber wenn ich wahr passieren, in der nicht verblassen ausführen, sondern es erscheint nur nach 500ms ohne Animation;

private void setViewTransition(final boolean isVisible, final View view) { 

    Animation fadeAnim; 

    if (isVisible) { 
     fadeAnim = new AlphaAnimation(0.0f, 1.0f); 
     if (view.getAlpha() == 1.0f) { 
      return; 
     } 
    } else { 
     fadeAnim = new AlphaAnimation(1.0f, 0.0f); 
     if (view.getAlpha() == 0.0f) { 
      return; 
     } 
    } 

    fadeAnim.setDuration(500); 
    fadeAnim.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      if (isVisible) { 
       view.setAlpha(1.0f); 
      } else { 
       view.setAlpha(0.0f); 
      } 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
     } 
    }); 

    view.startAnimation(fadeAnim); 
} 

Es könnte zu diesem Thema in Beziehung gesetzt werden: Android fade in not working, die nie irgendwelche Antworten bekam ...

Was mache ich falsch?

+0

Versuchen Sie, Alpha von 0.0f von 1.0f in onAnimationEnd() -Funktion zu ändern und umgekehrt. –

+0

hat nicht funktioniert ... :(Es ist nur alles zur falschen Zeit erscheint ... – Jaythaking

+0

Ändern Sie jeden Wert mit einem anderen, das ist alles 1.0 mit 0.0 und 0.0 mit 1.0, weil 1.0 Alpha bedeutet sichtbar und Sie für unsichtbar verwendet –

Antwort

2

Obwohl ich mir nicht ganz sicher bin, warum dein Weg nicht funktioniert. Es ist ein wenig umständlich und ist wahrscheinlich komplizierter als es sein muss, um eine Fade-Animation zu erhalten. Hier ist eine wirklich prägnante Art, dies zu tun (für API 12+).

private void setViewTransition(boolean isVisible, View view) { 
    view.animate().alpha(isVisible ? 1.0f : 0.0f).setDuration(500); 
} 
+0

Wow, sehr saubere Lösung! Genau das, was ich gesucht habe. Danke – Jaythaking