缩放动画导致观看动画开始前缩短(Scale Animation Causes View to sho

2019-10-21 04:53发布

所以我有这个缩放动画,它应该做的是缩放视图,以全高度的70%,然后再缩放回原来的大小的东西。 我有不同的startOffsets两个标度的动画。

我与此遇到的问题是动画前视图比例甚至开始。 所以当动画开始,他们与已经缩短缩放视图中工作。

这里是我的动画XML:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:interpolator="@android:anim/linear_interpolator" >
    <scale
        android:duration="300"
        android:fillAfter="true"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:startOffset="200"
        android:toXScale="1.0"
        android:toYScale="0.7"
        />
    <scale
        android:duration="300"
        android:fillAfter="true"
        android:fromXScale="1.0"
        android:fromYScale="0.7"
        android:startOffset="1000"
        android:toXScale="1.0"
        android:toYScale="1.0"
        />
</set>

这里是我如何把这个动画:

mScaleTop = AnimationUtils.loadAnimation(this, R.anim.scale_top);
mTopView.startAnimation(mScaleTop);

有任何想法吗? 谢谢阅读。

Answer 1:

取决于评论@pskink通知

如果你的动画有一个周期模式下,只能设置android:interpolator属性@android:anim/cycle_interpolator"这样你就可以只使用第一阶段 ,然后将返回原单状态...

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/cycle_interpolator" >

<scale
    android:duration="300"
    android:fillAfter="true"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:startOffset="200"
    android:toXScale="1.0"
    android:toYScale="0.7" />

</set>

否则 ,如果你想使用linear_interpolator你必须从规模也高度1.0 ,而不是从0.7因为1.0指示当前状态

android:fromYScale="1.0"意味着100%的当前状态和原单的状态= 70%...

所以你必须标高android:fromYScale="1.0"android:fromXScale="1.42"

因为: android:fromYScale="1.0" = 70%从原大小必须添加的70 42%至等于全原单高度的100%....

 <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android"
 android:interpolator="@android:anim/linear_interpolator" >

<scale
    android:duration="300"
    android:fillAfter="true"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:startOffset="200"
    android:toXScale="1.0"
    android:toYScale="0.7"
    />
<scale
    android:duration="300"
    android:fillAfter="true"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:startOffset="1000"
    android:toXScale="1.0"
    android:toYScale="1.42"
    />
</set>


文章来源: Scale Animation Causes View to shorten before start of animation