我有一个简单的活动,将箭头旋转到任意角度,当箭头停止旋转时,它会闪烁。闪烁的效果是一种Alpha动画,它应用于箭头的点亮版本的imageview
。
在Lollipop
及更高版本中它可以正常工作,但是在KitKat
中应用alpha动画时,它会抵消已完成的旋转动画的setFillAfter
,并且箭头立即变为指向直线向上(0度)
public void Spin2 ()
{
spinning = true;
degreeEnd = rnd.nextInt(360);
RotateAnimation spinIt = new RotateAnimation(0,3600+degreeEnd, RotateAnimation.RELATIVE_TO_SELF,0.5f,RotateAnimation.RELATIVE_TO_SELF,0.5f);
spinIt.setDuration(6000);
spinIt.setFillAfter(true);
spinIt.setInterpolator(new DecelerateInterpolator());
spinIt.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
arrowLit.setVisibility(View.VISIBLE);
animBlink = new AlphaAnimation(1,0);
animBlink.setDuration(500);
animBlink.setInterpolator(new AccelerateInterpolator() );
animBlink.setRepeatCount(Animation.INFINITE);
// in KitKat this animation seems to reset the rotation..
arrowLit.startAnimation(animBlink);
spinning = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
theSpinner.startAnimation(spinIt);
}
有趣的是,当您再次开始旋转时,它会弹回到应有的位置(degreeEnd)并从此处开始旋转。
这就像它暂时覆盖旋转的setFillAfter
。我在动画上尝试了setFillBefore
等的各种组合。另外,如果我将闪烁的动画设置为有限的数字(例如4),它将停止并保持为零-在我重新旋转之前不会更正。
同样,这在API 20及更高版本中也可以正常工作。
感谢您的帮助
安迪
答案 0 :(得分:0)
似乎与Frame Layout
有关。一旦脱离方程式,它就可以在KitKat上正常工作。