问题现象
底部tab,现在大家都很熟悉了,点击一个tab 就切换一个fragment,现在主流的做法渐渐演变成点击底部tab的时候
对应的icon要做一些动画。通常而言,我们在做类似动画时往往依赖的是lottie这个动画库(别问为什么,问就是不会做,做的烂)。然而在实际开发中,我们发现如果这个动画稍微复杂一些,就会出现不易察觉的丢帧现象。往往表现在:
第一次点击tab的时候,因为涉及到对应fragment的初始化(可能会有一些耗时操作),所以会导致 该lottie动画 有一点点丢帧的现象,看上去就好像一个本应该执行10帧的动画 只执行了不到10帧。
怎么证明这个动画执行的不完美?
比如说 我们可以 打印一下这个动画的执行过程
mLottieAnimationView.addAnimatorUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Log.v("wuyue", "onAnimationUpdate ===" + animation.getAnimatedFraction());
}
});
复制代码
第一次执行动画时,注意这一次执行动画的时候会伴随着对应的fragment的初始化。