2013-02-01 5 views
8

Ho un elemento ImageView che creo nel mio codice e posto all'interno del mio RelativeLayout. Ho impostato questa immagine di essere invisibile per iniziare con utilizzando il seguente codice:Android Alpha Fade in animazione Numero

arrow.setVisibility(View.INVISIBLE); 

Ho poi definito un fade-in Alpha animazione tramite XML:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false" 
android:fillEnabled="true" 
android:fillAfter="true" 
android:fillBefore="true"> 

<alpha 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:startOffset="100" 
    android:duration="300" /> 

/set> 

Per eseguire l'animazione:

ho semplicemente chiamare il seguente per avviare l'animazione

myview.startAnimation(myanimation); 

il problema che sto vedendo è che la mia ani la visualizzazione fa tremare ImageView a piena visibilità e quindi passa attraverso l'animazione di alpha 0 a 1. Come posso risolvere questo problema? Non riesco a impostare il valore alfa iniziale su 0 perché l'animazione alfa è basata sulla percentuale e non sul valore alfa assoluto. (es .: 0 * valore attuale a 1 * valore attuale)

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Beh, sembra che il problema è dovuto alla eseguire l'animazione al completamento di un'altra animazione per un oggetto vista differente. Qualcuno può raccomandare una correzione? –

+0

Android si occuperà di annullare un'altra animazione nella stessa vista. Dici che è una vista * diversa * che ha l'animazione che interferisce. Forse puoi cancellarlo tramite 'clearAnimation()'? –

+0

Sto iniziando a pensare che questo problema sia solo un bug di Android. L'ho visto menzionato altrove senza una risposta e l'animazione che sto facendo non interferisce davvero. È solo che sto iniziando questa dissolvenza in animazione quando finisce l'altra. Ho cercato chiaro l'animazione senza fortuna. Ricevo ancora il flicker –

risposta

1

Credo che il problema è, con questa riga di codice:

android:fillBefore="true" 

Qui, provare questo codice, invece, funziona per me:

<?xml version="1.0" encoding="UTF-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="2000" 
    android:fillAfter="true" 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" /> 
+0

Stavo avendo lo stesso problema. Nel mio caso 'introAnimation.setFillBefore (true);' risolto il problema –