我还不擅长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动画。)
答案 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>