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
8
A
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);
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
sguardo interpolazioni –