我在RecyclerView的ViewHolder中使用了Lottie动画。滚动时,帧速率太低。即使在动画暂停的情况下也会发生这种情况。
对这个问题有什么建议或解决方案吗?
发布于 2018-06-07 12:10:46
如果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,这可能有助于擦除一些内存。
发布于 2018-06-07 11:54:17
有一个名为Cache Strategy的属性,它第一次缓存动画以生成平滑的动画
其默认值为weak,但您可以将该值更改为strong,如下所示
app:lottie_cacheStrategy="none“
App:lottie_cacheStrategy=“弱”
App:lottie_cacheStrategy=“强”
看看这篇关于Performance的讨论,如果缓存不起作用,它可能会很有用
https://stackoverflow.com/questions/50446648
复制相似问题