web-dev-qa-db-fra.com

Android Animation d'échelle avec interpolateur de rebond

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>
37
Gaurav Vashisth

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>
98
Gaurav Vashisth

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.

21
LukaCiko

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.

1
Snicolas

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" />
0
user2332087