Android AccelerateDecelerateInterpolator 不工作
Android AccelerateDecelerateInterpolator not working
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(mCard, "scaleX", 1f, 0f),
ObjectAnimator.ofFloat(mCard, "scaleY", 1f, 0f),
ObjectAnimator.ofFloat(mBackground, "alpha", 1f, 0f)
);
set.setDuration(2000l);
set.setInterpolator(new AccelerateDecelerateInterpolator()); //this isn't working
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
//Stuff here
}
});
set.start();
这对我来说似乎很简单,我过去使用过插值器并且没有遇到过麻烦。但是,对于这个 AnimatorSet,如果我注释掉 setInterpolator
行,动画看起来完全一样。如您所见,我放慢了它的速度,这样我就可以确保我不是没有注意到效果,而是它绝对没有发生。
我做错了什么?
我相信默认动画是 AccelerateDecelerateInterpolator
。查看 Animate
的 Android 源代码,构造函数这样做:
public Animation() {
ensureInterpolator();
}
protected void ensureInterpolator() {
if (mInterpolator == null) {
mInterpolator = new AccelerateDecelerateInterpolator();
}
}
尝试使用不同的插值器以确保其正常工作。
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(mCard, "scaleX", 1f, 0f),
ObjectAnimator.ofFloat(mCard, "scaleY", 1f, 0f),
ObjectAnimator.ofFloat(mBackground, "alpha", 1f, 0f)
);
set.setDuration(2000l);
set.setInterpolator(new AccelerateDecelerateInterpolator()); //this isn't working
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
//Stuff here
}
});
set.start();
这对我来说似乎很简单,我过去使用过插值器并且没有遇到过麻烦。但是,对于这个 AnimatorSet,如果我注释掉 setInterpolator
行,动画看起来完全一样。如您所见,我放慢了它的速度,这样我就可以确保我不是没有注意到效果,而是它绝对没有发生。
我做错了什么?
我相信默认动画是 AccelerateDecelerateInterpolator
。查看 Animate
的 Android 源代码,构造函数这样做:
public Animation() {
ensureInterpolator();
}
protected void ensureInterpolator() {
if (mInterpolator == null) {
mInterpolator = new AccelerateDecelerateInterpolator();
}
}
尝试使用不同的插值器以确保其正常工作。