我在RecyclerView的ViewHolder中使用Lottie动画。滚动时,帧速率太低。即使动画暂停,也会发生这种情况。
对此问题的任何建议或解决方案?
答案 0 :(得分:0)
有一个名为Cache Strategy
的属性,它首次缓存动画以制作平滑动画
其默认值为weak
,但您可以将值更改为strong
,使其像这样
应用程式:lottie_cacheStrategy ="无"
应用程式:lottie_cacheStrategy ="弱"
应用程式:lottie_cacheStrategy ="强"
看看这个Performance讨论如果缓存可能有用 没有工作
答案 1 :(得分:0)
如果ViewHolder
被回收,您应该停止动画。
在RecyclerView适配器中覆盖
@Override
public void onViewRecycled(@NonNull ViewHolder holder) {
super.onViewRecycled(holder);
holder.mLottieView.cancelAnimation();
Drawable drawable = holder.mLottieView.getDrawable();
if (drawable instanceof LottieDrawable) {
((LottieDrawable) drawable).clearComposition();
}
}
我清除了LottieDrawable
中的内容,因此他们不会在内部存储任何内容,它也会调用私有方法clearBitmaps
,这可能有助于擦除内存。