2015-05-29 10 views
8

I mave un pulsante di azione fluttuante nella mia app in cui voglio fare un pop-in, dove è invisibile e inizia a crescere fino a 60dp e poi ridimensiona alla normale dimensione di 56dp. Come può essere fatto? Io so come fare una dissolvenza normale in animazione, ma non una comparsa inAnimazione pop in Android

+1

sguardo interpolazioni –

risposta

19

vorrei creare un file di animazione in res/anim e utilizzare un'animazione scala sequenziale in questo modo:.

expand_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <scale 
     android:fromXScale="0.0" 
     android:fromYScale="0.0" 
     android:toXScale="1.1" <!--set the scale value here--> 
     android:toYScale="1.1" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:duration="400"/> <!--length of first animation--> 


    <scale 
     android:fromXScale="1.1" <!--From whatever scale you set in the first animation--> 
     android:fromYScale="1.1" 
     android:toXScale="1.0" <!--Back to normal size--> 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:startOffset="400" <!--start 2nd animation when first one ends--> 
     android:duration="400"/> 
</set> 

Poi nella vostra attività:

Animation expandIn = AnimationUtils.loadAnimation(this, R.anim.expand_in); 
actionButton.startAnimation(expandIn); 
+0

Grazie mille. Dovrei prima nascondere il pulsante usando la visibilità? – qwertz

+0

Non dovresti farlo se stai impostando la prima scala di animazione per iniziare da 0.0. –

+0

Ok grazie :) – qwertz

8

ho scoperto che mia animazione era molto più agevole rispetto alla risposta accettata corrente quando sono passato per utilizzare l'Overshoot Interpolator.

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/overshoot_interpolator" > 

<scale 
    android:duration="700" 
    android:fromXScale="0.0" 
    android:fromYScale="0.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:toXScale="1.0" 
    android:toYScale="1.0" /> 

</set> 

Ecco un video che mostra esempi di interpolatori: https://www.youtube.com/watch?v=OMOJxBe9KGg

Qui è dove è toccato nella documentazione Android: https://developer.android.com/guide/topics/resources/animation-resource.html#View