Android动画:向上反弹

时间:2014-01-28 05:49:09

标签: android

我还不擅长Android动画,但我需要在我的新项目中实现一个反弹动画。以下是我用来完成它的动画文件。

<?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:repeatCount="infinite"
        android:repeatMode="restart"
        android:startOffset="5000"
        android:toXScale="1.0"
        android:toYScale="1.0" />

    <alpha
        android:duration="600"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

</set>

此动画将使对象动画向下反弹。我该怎么做才能让它反弹?

(如果你能提供解释也会好得多,以便我可以了解Android动画。)

2 个答案:

答案 0 :(得分:3)

在这种情况下,您应该调整android:pivotY。根据官方文档,android:pivotY表示在缩放对象时保持固定的Y坐标,指定为绝对数字,其中0是上边缘。如果您希望它向上增长,则应将android:pivotY设置为"100%"。喜欢:

<?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="100%"
        android:repeatCount="infinite"
        android:repeatMode="restart"
        android:startOffset="5000"
        android:toXScale="1.0"
        android:toYScale="1.0" />

    <alpha
       android:duration="600"
       android:fromAlpha="0.0"
       android:toAlpha="1.0" />

</set>

答案 1 :(得分:1)

这里有xml动画代码,它使对象掉落并具有反弹效果:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromYDelta="-300%"
        android:toYDelta="100%"
        android:duration="200"
        android:repeatMode="reverse"
        android:interpolator="@android:anim/accelerate_interpolator"
    />

    <scale 
        android:fromXScale="1"
        android:toXScale="1.08"
        android:fromYScale="1"
        android:toYScale="0.8"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="1"
        android:duration="30"
        android:repeatMode="reverse"
        android:startOffset="200"
        android:interpolator="@android:anim/bounce_interpolator"
        />

   <translate
        android:fromYDelta="100%"
        android:toYDelta="-200%"
        android:duration="120"
        android:startOffset="260"
        android:interpolator="@android:anim/decelerate_interpolator"
        />
   <translate
        android:fromYDelta="-200%"
        android:toYDelta="100%"
        android:duration="120"
        android:startOffset="380"
        android:interpolator="@android:anim/accelerate_interpolator"
        />

    <scale 
        android:fromXScale="1"
        android:toXScale="1.08"
        android:fromYScale="1"
        android:toYScale="0.8"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="1"
        android:duration="30"
        android:repeatMode="reverse"
        android:startOffset="500"
        android:interpolator="@android:anim/bounce_interpolator"
        />

    <translate
        android:fromYDelta="100%"
        android:toYDelta="-100%"
        android:duration="70"
        android:startOffset="560"
         android:interpolator="@android:anim/decelerate_interpolator"

        />
    <translate
        android:fromYDelta="-100%"
        android:toYDelta="100%"
        android:duration="70"
        android:startOffset="640"
        android:interpolator="@android:anim/accelerate_interpolator"
        />  

    <scale 
        android:fromXScale="1"
        android:toXScale="1.08"
        android:fromYScale="1"
        android:toYScale="0.8"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="1"
        android:duration="20"
        android:repeatMode="reverse"
        android:startOffset="710"
        android:interpolator="@android:anim/bounce_interpolator"
        />

</set>