我有这个动画,它可以放大一点,然后缩小到原始大小。但随着它缩小到原来的大小,它会慢慢缩小,突然缩小到原来的大小。不,它不是加速减速插补器,我也尝试了线性插补器,它做了同样的事情。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:startOffset="1000"
android:shareInterpolator="true">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000" />
<scale
android:duration="1000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="25%p"
android:pivotY="75%p"
android:toXScale="1.1"
android:toYScale="1.1" />
<set
android:startOffset="500">
<scale
android:duration="1000"
android:fromXScale="1.1"
android:fromYScale="1.1"
android:pivotX="25%p"
android:pivotY="75%p"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
</set>
答案 0 :(得分:3)
您的第一个缩放动画持续时间为1000.第二个缩放动画持续时间为500毫秒。所以他们在干涉。也许这就是你的问题。您可以尝试将第二个动画的起始偏移设置为1000.如果这没有帮助您可以查看Animation.fillAfter()
编辑:这有效
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:shareInterpolator="true"
android:startOffset="1000">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000" />
<scale
android:duration="1000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="25%p"
android:pivotY="75%p"
android:toXScale="1.1"
android:toYScale="1.1" />
<scale
android:duration="1000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="25%p"
android:pivotY="75%p"
android:startOffset="1000"
android:toXScale="0.9"
android:toYScale="0.9" />
</set>
你不必在集合中设置第二个集合,只需将startOffset直接添加到缩放动画中。
我刚才意识到,第二个比例必须使用1.0和0.9而不是1.1和1.0。因为它占当前尺寸的百分比,而不是原始尺寸。
答案 1 :(得分:0)
1)我认为你可以这样做。位置和比例...... vs属性不会改变原始属性。
view.animate()
.setDuration(1000)
.alpha(1)
.x(view.getPivotX() * 25 / 100)
.y(view.getPivotX() * 25 / 100)
.scaleX(1.1f)
.scaleY(1.1f)
.start();
view.animate()
.setStartDelay(1000)
.setDuration(1000)
.scaleX(1f)
.scaleY(1f)
.start();
2)你的动画持续时间为1000毫秒,你的第二个延迟是500.这可能会导致问题。