android规模的动画突然恢复到原始大小

时间:2016-05-26 23:01:03

标签: android animation

我有这个动画,它可以放大一点,然后缩小到原始大小。但随着它缩小到原来的大小,它会慢慢缩小,突然缩小到原来的大小。不,它不是加速减速插补器,我也尝试了线性插补器,它做了同样的事情。

<?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>

2 个答案:

答案 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.这可能会导致问题。