Je fais une animation à l'échelle avec anim xml
comme suit. L'interpolateur d'animation ne fonctionne pas. J'essaie d'avoir un interpolateur de rebond mais ne fonctionne pas.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<scale
Android:duration="900"
Android:fromXScale="1"
Android:fromYScale="0.5"
Android:interpolator="@Android:anim/bounce_interpolator"
Android:pivotX="50%"
Android:pivotY="0%"
Android:toXScale="1.0"
Android:toYScale="1.0" />
</set>
EDIT: En fait, tout mon xml est
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<scale
Android:duration="600"
Android:fromXScale="1"
Android:fromYScale="0.5"
Android:interpolator="@Android:anim/bounce_interpolator"
Android:pivotX="50%"
Android:pivotY="0%"
Android:toXScale="1.0"
Android:toYScale="1.0" />
<alpha
Android:duration="@Android:integer/config_longAnimTime"
Android:fromAlpha="0.0"
Android:interpolator="@Android:anim/decelerate_interpolator"
Android:toAlpha="1.0" />
</set>
J'ai enfin la solution. Cela fonctionne pour moi et pourrait être utile aux autres. La clé était de mettre la balise Android: interpolator dans le jeu d'animation.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:interpolator="@Android:anim/bounce_interpolator" >
<scale
Android:duration="600"
Android:fromXScale="1"
Android:fromYScale="0.5"
Android:pivotX="50%"
Android:pivotY="0%"
Android:toXScale="1.0"
Android:toYScale="1.0" />
<alpha
Android:duration="600"
Android:fromAlpha="0.0"
Android:toAlpha="1.0" />
</set>
Si vous souhaitez avoir différents interpolateurs pour vos animations dans le jeu d'animation, définissez l'attribut shareInterpolator
sur false comme ceci:
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shareInterpolator="false">
Et puis définissez un interpolateur dans chaque élément d'animation. Apparemment, shareInterpolator
est défini sur true par défaut.
essayez d'ajouter une durée:
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<scale
Android:fromXScale="1"
Android:fromYScale="0.5"
Android:interpolator="@Android:anim/bounce_interpolator"
Android:pivotX="50%"
Android:pivotY="0%"
Android:toXScale="1.0"
Android:toYScale="1.0"
Android:duration="1000" />
</set>
Et notez que le jeu d'animation est inutile s'il ne contient qu'une seule animation.
Le rebond est juste un effet d'animation où l'animation se termine en rebondissant. Pour cet ensemble Android: valeur d'interpolateur sur @Android: anim/bounce_interpolator. Ce rebond peut être utilisé avec n'importe quel type d'animation. L'exemple de glissement suivant utilise l'effet de rebond.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fillAfter="true"
Android:interpolator="@Android:anim/bounce_interpolator">
<scale
Android:duration="500"
Android:fromXScale="1.0"
Android:fromYScale="0.0"
Android:toXScale="1.0"
Android:toYScale="1.0" />