Android-Daily-Interview icon indicating copy to clipboard operation
Android-Daily-Interview copied to clipboard

2019-12-25:对于GIF 图片加载有什么思路和建议?

Open Moosphan opened this issue 5 years ago • 5 comments

Moosphan avatar Dec 25 '19 01:12 Moosphan

可以用c++ 加载 效率会有所提高 参照: giflib

guosen avatar Dec 25 '19 01:12 guosen

对gif,目前Google并没有提供很好的支持,目前大部分还是依赖第三方库加载,比如glide,frescro。如果自己写代价有点,可能还得用到C

zhangandroid avatar Dec 31 '19 13:12 zhangandroid

gif图实际上就是多帧合并的图

参考Fresco内部实现: 1,View层使用一个Drawable,包含bitmap,并依据gif的信息不断的更新并绘制bitmap 2,C层提供api功能,例如:输入gif数据流,提供解析gif信息、更新bitmap等功能

yline avatar Feb 19 '20 07:02 yline

1、使用GIFLIB+双缓冲的实现,只会创建两个Bitmap,并且内存消耗非常之稳定

2、相比Glide的原生加载,当加载过大的GIF图时,超过了BitmapPool的可用大小,还是会直接创建Bitmap的.

3、使用GIFLIB是直接在native层对GIF数据进行解码的,这一点对Glide来说,效率和内存消耗情况都比较占优.

4、Glide构建当前帧数据和下一帧数据是串行的,而FrameSequenceDrawable则是利用了双缓冲以及解码子线程来实现近似同步的完成上一帧和下一帧数据的无缝衔接的.

用Glide加载Gif导致的卡顿,说一下你的优化思路

senlinxuefeng avatar Jan 18 '22 14:01 senlinxuefeng

这个优化方案还不错,侵入性相对低一些,可以提供参考。 https://juejin.cn/post/6966079368820949029

yihu5566 avatar Jul 01 '22 06:07 yihu5566