android - AlphaAnimation 在 KitKat 中旋转 Framelayout
问题描述
我有一个简单的活动,可以将箭头旋转到随机角度,当箭头停止旋转时,它会闪烁。闪烁效果是应用于imageview
箭头的点亮版本的 alpha 动画。
它在及以上工作得很好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 及更高版本中运行良好。
谢谢你的帮助
安迪
解决方案
这似乎与Frame Layout
. 一旦它脱离了等式,它就可以在 KitKat 上正常工作。
推荐阅读
- python-3.x - 如何将熊猫数据框转换为python中的列
- javascript - 我不能使用 sendgrid 。我无法发送电子邮件
- powershell - Powershell 从字符串获取值知道它总是以字符串开头并以字符串结尾
- python - Fastapi 如何使用 sqlalchemy 管理对数据库的并发调用
- python - 有没有办法使用 for 循环扫过 python 中的浮点数?
- html - CSS按钮在悬停期间不改变颜色(css和html)
- redux - Redux - 如何将生成的道具传递给兄弟选择器函数?
- c++ - 我似乎无法将 g++ 链接到我安装的 libcurl
- django - 我无法在 GitHub 操作中安装 graphene-django
- c# - Blazor 绑定到数组是一个元素吗?