2011-02-23 14 views
33

voglio avere un View che inizialmente è invisibile e quando si preme un pulsante, diventa visibile con una dissolvenza in animazione. Sto usando il AlphaAnimation per l'effetto dissolvenza. Il problema è che se rendi invisibile la vista l'animazione non può essere vista.utilizzando la dissolvenza in animazione per una vista

Grazie mille,

Gratzi

risposta

25

Fornire una AnimationListener alla animazione e rendere la vista visibile non appena si avvia l'animazione.

http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html

+3

Grazie mille, l'uomo! Il problema è che l'applicazione non viene eseguita se la vista è invisibile, quindi il metodo onStartAnimation non può essere utilizzato. Ma Ive impostare la visualizzazione visibile nel ascoltatore del pulsante, prima di iniziare l'animazione, e sto impostando la vista di essere invisibile nel onEndAnimation. – Gratzi

+0

Non capisco il motivo per cui si imposta l'animazione invisibile in onEndAnimation, nella sua domanda iniziale, si dice che si vuole fade in e diventano visibili, perché si imposta invisibile in onEndAnimation? – Ixx

125

Supponiamo di avere un ImageView nome imageView e un file di animazione your_fade_in_anim.xml dentro le res \ anim \ cartella:

ImageView imageView = (ImageView) findViewById(R.id.imageView); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim); 
// Now Set your animation 
imageView.startAnimation(fadeInAnimation); 

tuo XML

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="[duration (in milliseconds)]" 
     android:repeatCount="infinite" /> 
</set> 

Sostituire le staffe con la tua durata effettiva.

+10

In che modo questo risolve il problema della visione inizialmente invisibile? – Ixx

+4

Perché questa risposta ha avuto così tanti voti? non risponde nemmeno alla domanda. –

+47

Anche se non risponde alla domanda nel corpo, risponde alla domanda di "Come faccio a svanire in una vista", che è il titolo della questione. Per questo motivo, immagino che molte persone trovino questa risposta mentre cercano come fare le animazioni (come ho fatto io). Anche se non è strettamente la risposta, è sicuramente utile. – karl

3

Al posto del numero di ripetizioni infinite e nascondere/visualizzare la vostra vista, suggerisco di non è sufficiente ripetere l'animazione e inizialmente iniziare con il canale alfa impostata al massimo. Quindi è possibile utilizzare:

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="[duration (in milliseconds)]" 
     android:repeatCount="0" /> 
</set> 

E il gioco è fatto. Non c'è bisogno di un ascoltatore, di nascondere o mostrare. Altrettanto semplice

Problemi correlati