我有一组两个动画,两个动画使用过冲插值器一起运行
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/overshoot_interpolator" >
<translate
android:duration="6000"
android:fromXDelta="100%" android:toXDelta="0%" />
<scale
android:duration="6000"
android:fromXScale="1.0" android:toXScale="0.6"
android:pivotX="0"
android:fromYScale="1.0" android:toYScale="1.0"
android:repeatCount="1"
android:repeatMode="reverse" />
</set>
我想要translate
动画超调,并且scale
动画加速。
我尝试这样做,但它不起作用:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:interpolator="@android:anim/overshoot_interpolator"
android:duration="6000"
android:fromXDelta="100%" android:toXDelta="0%" />
<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="6000"
android:fromXScale="1.0" android:toXScale="0.6"
android:pivotX="0"
android:fromYScale="1.0" android:toYScale="1.0"
android:repeatCount="1"
android:repeatMode="reverse" />
</set>
对于在单个对象上执行的所有动画,似乎在给定时间只有一个插值器可以处于活动状态。
这只是猜测工作。我记得其中一个AnimationSet
的构造函数可以接受一个参数,即共享插值器.
根据参数的名称判断,在您的情况下,这可能应该设置为 false。现在,它应该使用默认的“值”。这个默认值很可能是true因为您的动画没有不同的插值器,尽管您为每个动画指定了不同的插值器。
为了确认这一点,AnimationSet 的源代码中有以下行为 shareInterpolator 分配值(来自 xml):
setFlag(PROPERTY_SHARE_INTERPOLATOR_MASK,
a.getBoolean(com.android.internal.R.styleable.AnimationSet_shareInterpolator
, true));
这清楚地意味着,如果未指定此布尔值,它将默认为 true。
Solution
为了解决你的问题,我想你应该使用这个“R.styleable.AnimationSet_shareInterpolator”来指定它。这仅仅意味着adding android:shareInterpolator="false"
to your <set>
elements
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)