问题描述
偶发性AlphaAnimation失常、无效、或不执行。
代码一切正确,提前也对view进行了clearAnimation并invalidate,但偶发性不执行。
排查
先上原代码:
//先清除可能缓存的Animation
view.clearAnimation();
view.invalidate();
//保证显示状态
view.setVisibility(View.VISIBLE);
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(200);
alphaAnimation.setFillAfter(true);
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//某些结束后要做的事务
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(alphaAnimation);
运行结果为大多数情况执行正常,但偶发性无效,会不经过动画直接结束,onAnimationEnd正常执行,但未显示任何动画效果。
解决方法
建议用属性动画替代。
上述代码可替换为:
view.animate().alpha(1).setDuration(200).withEndAction(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//某些结束后要做的事务
}
});
}
});;
前人挖坑,后人填坑......
网友评论